這是乙個系列文章,主要分享shell(部分功能僅適用於bash)的使用建議和技巧,每次分享3點,希望你能有所收穫。
$ sleep
1234 &
[1] 19340
$ sleep
1234 &
[2] 19342
$ sleep
1234 &
[3] 19344
$ alias | grep psg
alias psg='ps -ef | grep --color=auto'
$ ps -ef | grep
1234
root 19340
2159
014:22 pts/1
00:00:00
sleep
1234
root 19342
2159
014:22 pts/1
00:00:00
sleep
1234
root 19344
2159
014:22 pts/1
00:00:00
sleep
1234
root 19360
2159
014:23 pts/1
00:00:00
grep --color=auto 1234
$ psg 1234
root 19340
2159
014:22 pts/1
00:00:00
sleep
1234
root 19342
2159
014:22 pts/1
00:00:00
sleep
1234
root 19344
2159
014:22 pts/1
00:00:00
sleep
1234
root 19366
2159
014:23 pts/1
00:00:00
grep --color=auto --color=auto 1234
通過系統提供的alias命令將ps和grep命令合成乙個命令psg,實現快速查詢特定字串的相關程序。比如執行ps -ef | grep 1234
命令查詢包含1234字串的相關程序,通過執行alias psg='ps -ef | grep --color=auto'
命令,定義乙個新命令psg實現相同功能,更加方便快捷。
$ psk()' | xargs kill -9;}
$ sleep
1234 &
[1] 18055
$ sleep
1234 &
[2] 18057
$ sleep
1234 &
[3] 18060
$ ps -ef | grep
1234
root 18055
2159
014:03 pts/1
00:00:00
sleep
1234
root 18057
2159
014:03 pts/1
00:00:00
sleep
1234
root 18060
2159
014:03 pts/1
00:00:00
sleep
1234
root 18067
2159
014:03 pts/1
00:00:00
grep --color=auto 1234
$ psk 1234
kill: sending signal to 18073 failed: no such process
[1] killed sleep
1234
[2]- killed sleep
1234
[3]+ killed sleep
1234
$ ps -ef | grep
1234
root 18082
2159
014:03 pts/1
00:00:00
grep --color=auto 1234
在日常工作中,有時候需要kill多個相關程序,如果單獨去乙個乙個kill,很不方便且容易出錯。通過定義乙個函式psk可以實現查詢並kill相關程序的功能。例如,示例中通過sleep命令模擬啟動了3個程序,啟動後可以檢視到3個程序分別在後台執行,執行psk 1234命令即可同時kill這3個程序,執行完psk 1234命令後,再次查詢相關程序,發現程序已經不存在。
$ sleep
1234 &
[1] 17888
$ sleep
1234 &
[2] 17889
$ sleep
1234 &
[3] 17890
$ ps -ef | grep
1234
root 17888
2159
014:01 pts/1
00:00:00
sleep
1234
root 17889
2159
014:01 pts/1
00:00:00
sleep
1234
root 17890
2159
014:01 pts/1
00:00:00
sleep
1234
root 17902
2159
014:01 pts/1
00:00:00
grep --color=auto 1234
$ ps -ef | grep [1]234
root 17888
2159
014:01 pts/1
00:00:00
sleep
1234
root 17889
2159
014:01 pts/1
00:00:00
sleep
1234
root 17890
2159
014:01 pts/1
00:00:00
sleep
1234
如果注意看前面2個技巧,會發現psg查詢程序時會包含自身程序,psk在kill相關程序時會列印一條資訊:kill: sending signal to 18073 failed: no such process,這是因為查詢程序時,沒有將自身程序排除導致。示例中第一次執行ps -ef | grep 1234
,發現有乙個17902程序,這個程序就是執行ps -ef | grep 1234
中的grep命令。如果執行ps -ef | grep [1]234
會發現,已經將自身程序排除了。當然,也可以通過grep的-v選項實現過濾自身的功能,如下:
$ ps -ef | grep
1234 | grep -v grep
root 17888
2159
014:01 pts/1
00:00:00
sleep
1234
root 17889
2159
014:01 pts/1
00:00:00
sleep
1234
root 17890
2159
014:01 pts/1
00:00:00
sleep
1234
現在,你可以在psg和psk命令的字串第乙個字元新增中括號試一下效果了。
注:將分享的alias或者函式寫入你的shell配置檔案(如:~/.bashrc或/etc/profile)中,這樣每次開啟終端都能使用。
分享shell程式設計中的幾個小技巧
1 列印一些頭資訊 command dilimiter dilimiter 以分界符號dilimiter中的內容作為命令的標準輸入 常用在echo命令中,這樣就避免了沒輸出一行就要使用乙個echo命令,同時,輸出格式的調整也相應變得簡單了。例如 echo something message hell...
總結ThinkPHP使用技巧經驗分享 二
迴圈輸出 volist 還有別名 iterate 模版賦值 user d user list user findall this assign list list 模版定義 注意 name 和 id 表示的含義 輸出 list 的第 5 15 條記錄 輸出偶數記錄 輸出 key.子迴圈輸出 swit...
python使用建議與技巧分享(二)
這是乙個系列文章,主要分享python的使用建議和技巧,每次分享3點,希望你能有所收穫。1 如何在if語句中檢測多個條件 不推薦方式 flag1 1 flag2 0 flag3 0 if flag1 1 or flag2 1 or flag3 1 print ok 推薦方式 flag1 1 flag...