1. linux shell編程,這個命令if [ "$pid" ]; then...。什麼時候if條件判斷為true和false呢
只有當pid為空時,if條件才會為false。如果pid是程序獲取的進程號,那麼就是當進程存在時(pid不為空)為true,當進程不存在時(pid為空)為false。
1、pid=""
if條件為false,如下面輸出2:
pid=""
if["$pid"]
then
echo"1"
else
echo"2"
fi
2、pid=任何非空值
if條件為true,如下面輸出1:
pid="0"
if["$pid"]
then
echo"1"
else
echo"2"
fi
希望能夠幫助到你,你的好評是我前進的動力,謝謝!
2. 如何在linux命令行下修改時區
查看時區
cat /etc/sysconfig/clock
設置時區
tzselect
timeconfig
cat /etc/sysconfig/clock ZONE=」Asia/Shanghai」 —> /usr/share/zoneinfo 下面的文件。 UTC=false —> 硬體時鍾是否為 UTC 或者說 GMT 時鍾。 ARC=false —> 如果是在 Alpha 機器上,則設置為 true 。
把硬體時鍾設置為 UTC 的好處就是他能自動設置夏時制,缺點是,在安裝有多重操作系統啟動的機器上,在另外的操作 系統上時鍾會錯誤。
Linux 的時鍾設置文件為:/etc/localtime ,實際上這個文件是 /usr/share/zoneinfo 目錄下對應文件的符號連接。 假設我們所處的地區位於上海,那麼只要運行以下的命令就可以設置時區了。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
Linux 啟動時,其中的一個腳本(/etc/rc.d/rc.sysinit)會運行 /sbin/hwclock 程序,把當前的硬體時鍾復制為系統 時間。hwclock 假定硬體時鍾已經設置為本地時鍾,除非帶有 –utc 參數。腳本文件會讀取 /etc/sysconfig/clock 文 件的設置,因此我們不需要修改腳本,直接修改這個配置文件就可以了,根據需要把其中的 UTC 行,設置為 true 或 者 false。
設置硬體時鍾時,首先使用 date 命令(「date MMDDhhmmYYYY.ss」) 設置好系統時鍾,然後使用 「/sbin/hwclock –systohc」 把硬體時鍾設置為和當前系統時間一致。
如果你在某些應用下面的時間是錯誤的,那麼你在運行 Red Hat Linux 5.0 或 5.1,解決的辦法是建立 /usr/lib/zoneinfo 到 /usr/share/zoneinfo 的符號連接:
ln -s /usr/share/zoneinfo /usr/lib/zoneinfo
小結:時鍾設置的問題本身比較簡單,但是它涉及到幾個基本的配置文件:
/etc/rc.d/rc.sysinit /etc/sysconfig/clock /etc/localtime /usr/share/zoneinfo時區的配置文件是/etc/sysconfig/clock。用tzselect命令就可以修改這個配置文件,根據命令的提示進行修改就好了。 但是在實際工作中,發現這種方式是不能夠使得伺服器上的時間設置馬上生效的,而且使用ntpdate去同步時間伺服器也不能夠更改時間。即使你使用了date命令手工設置了時間的話,如果使用ntpdate去進行時間同步的話,時間又會被改動到原來的錯誤時區的時間。而生產的機器往往是非常重要的,不能夠進行重啟等操作。 在網上找了幾種方法試了下,發現如果要修改時區並且馬上生效,可以更換/etc/localtime 文件來實現。比如我的時區是中國上海,那麼就可以使用如下的命令來使得時區的更改生效。 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 然後最好使用下面的命令將更改寫入bios。
3. Linux bash/sh/shell編程中的if語句應該怎麼寫
line="#abcmatch
BCD"
REGEXP="^[#]"
#
變數賦值不需要前綴$
if
[[
$line
=~
$REGEXP
]]
&&
[[
$line
!=
''
]];
then
#粗心
[[
]]
要配對使用
你寫成了
[[
]
[
]]
true
#shell
不能使用空的if
結構,至少要有一個命令。
可以使用true命令
。
echo
yes
else
echo
NO
fi
###
end
另外Bash
不支持完全的正則表達式。[[
「$line」
=~
「$REGEXP」
]]
不能達到你想要的效果。
需要使用echo
"$string"|
grep
-qP
/regexp/
Zsh
支持完整的正則表達式,
[[
「$line」
=~
「$REGEXP」
]]
能達到你想要的效果。
4. 工作中總結的常用linux命令(Ⅱ)
[1] 每兩行合並在一起
<@dahu>awk 'ORS=NR%2?" ":"\n"{print}'
[2] 每三行合並在一起
<@dahu>awk 'ORS=NR%3?" ":"\n"{print}'
[3] 每四行合並在一起
<@dahu>awk 'ORS=NR%4?" ":"\n"{print}'
[4] 統計std cell和sRam占的面積
<@dahu>summaryReport
[5] 找出drc的port相關的數量
<@dahu>cat postroute_opt.drc | grep -B1 Type: | grep -v Type: | grep "\[" |-
[6] 獲得選中的pin的名字
<@innovus>dbget selected.name
[7] 對一個文件,多目標刪除
<@dahu>sed -i 's/MODE1\|MODE2\|MODE3\|MODE4\|MODE5//g'
[8] 獲得不規則fplan的坐標組
<@innovus>dbget top.fplan.boxes
[9] 在某個目錄下找到帶某個字元的文件[區分大小寫]
<@dahu>find -iname "*tcic*"
[10] 在某個目錄下,遍歷所有文件內容,得到含有某個字元/字元串的行
<@dahu>grep -r 'insertion delay' ./
[11] 查看當前的INNOVUS版本號
<@dahu>echo $INVS_VER
[12] 替換某個目錄下所有文件內容
<@dahu>sed -i"s/查找的內容/替換後的內容/g"`grep -rl"查找的內容"./`
[13] 在gui界面下highlight某條path
<@dahu> ctd_trace -from * -to * -color *
[14] 引用${REV},為什麼採用大括弧{}
為了防止引用造成後面錯亂。
如:/fs/omp_com_03/RELEASE/top2hlb/R1/HLB_DEF/${REV}/${top}.def.gz
[15] 解壓命令
gzip -d FileName.gz
[16] 換某個cell的坐標 {AAA, BBB}
<@innovus> dbset [dbget top.inst.name XXXXXXXX].pt_x AAA
<@innovus> dbset [dbget top.inst.name XXXXXXXX].pt_y BBB
<@innovus> zoomSelected
[17] 設置某一個cell不用
<@innovus> set_dont_touch BUFF false
<@innovus> set_dont_touch BUFF true
[18] 找某個性質
<@innovus> dbSet [].?h
[19] 刪去空白行
vim 中:g/^s*$/d
簡單解釋一下:
g :全區命令
/ :分隔符
^s*$ :匹配空行,其中^表示行首,s表示空字元,包括空格和製表符,*重復0到n個前面的字元,$表示行尾。連起來就是匹配只有空字元的行,也就是空行。
/d :刪除該行
[20] echo 寫入帶有雙引號""的內容。
echo 『 「AAAbbb」 』 >> 1.tcl
[21] echo 寫入帶有單引號『』的內容。
echo 「 『AAAbbb' 」 >>1.tcl
[22] keep CPU 數目
<@innovus>setMultiCpuUsage -localCpu 16
<@innovus>history keep 999999
[23] 打開xlsm文件
openoffice.org 文件
[24] 顯示clock path路徑
<@innovus> report_timing -to XXX -path_type full_clock
[25]報出沒有被約束到的path
<@innovus> report_timing -to XXX -uncounstrained
[26]報出穿過path中的某一點
<@innovus> report_timing -to XXX -view
view = MODE + corner
[27] vim 全選(高亮顯示 ):按esc後,然後ggvG或者ggVG
[28]