有時候因為一些情況,需要把 linux 下符合某一項條件的所有程序 kill 掉,又不能用 killall 直接殺掉某一程序名稱包含的所有運作中程序(我們可能隻需要殺掉其中的某一類或運作指定參數指令的程序),這個時候我們需要運用 ps, grep, cut 和 kill 一起操作。
ok,下面給出具體的參考:
ps -ef|grep LOCAL=NO|grep -v grep|cut -c 9-15|xargs kill -9
運作這條指令将會殺掉所有含有關鍵字"LOCAL=NO"的程序,是不是很友善?
下面将這條指令作一下簡單說明:
管道符"|"用來隔開兩個指令,管道符左邊指令的輸出會作為管道符右邊指令的輸入。
“ps -ef” 是linux裡檢視所有程序的指令。這時檢索出的程序将作為下一條指令"grep LOCAL=NO"的輸入。
“grep LOCAL=NO” 的輸出結果是,所有含有關鍵字"LOCAL=NO"的程序。
“grep -v grep” 是在列出的程序中去除含有關鍵字"grep"的程序。
“cut -c 9-15” 是截取輸入行的第9個字元到第15個字元,而這正好是程序号PID。
“xargs kill -9” 中的 xargs 指令是用來把前面指令的輸出結果(PID)作為"kill -9"指令的參數,并執行該指令。"kill -9"會強行殺掉指定程序。
其它類似的情況,隻需要修改"grep LOCAL=NO"中的關鍵字部分就可以了。
另一種方法,使用awk:
ps x|grep gas|grep -v grep |awk ‘{print $1}’|xargs kill -9