Bash
如何根據ps輸出殺死一堆工作?
這是來自的輸出
ps
:$ ps aux | grep blob ubuntu 4286 0.0 0.1 34748 9592 ? S Jan14 0:00 /usr/bin/python /usr/local/bin/pynt start_blob_reader ubuntu 4287 0.0 0.1 34748 9596 ? S Jan14 0:00 /usr/bin/python /usr/local/bin/pynt start_blob_reader ubuntu 4288 0.0 0.0 4444 656 ? S Jan14 0:00 /bin/sh -c python -m blob_manager blob ubuntu 4289 1.2 0.2 65512 20668 ? S Jan14 1974:18 python -m blob_manager blob ubuntu 4290 0.0 0.0 4444 656 ? S Jan14 0:00 /bin/sh -c python -m blob_manager blob ubuntu 4291 1.2 0.2 65404 20624 ? S Jan14 1978:24 python -m blob_manager blob ubuntu 19849 0.0 0.0 10464 896 pts/0 S+ 05:43 0:00 grep blob
通過 shell 腳本最容易殺死這些工作(除了
19849
因為它是程序本身)是什麼?grep
要麼 要麼
bash
都zsh
可以。
使用
pkill
:pkill blob
這將殺死與模式匹配的所有程序
blob
。另一種方法是
killall
,但您應該呼叫它,-r
以便將模式解釋為正則表達式:killall -r blob
你應該得到所有的 PID 並殺死它們:
kill $(ps -ef|grep -v grep |grep java |awk '{print $2}'|tr '\n' ' '); echo
或者讓它更詳細:
netikras@netikras-PC ~ $ #ps -ef |grep -v grep |grep java |while read line; do echo "$line" |awk '{$1=$3=$4=$5=$6=$7=""; print "Killing: "$0"\n"}'; kill $(echo $line|awk '{print $2}') && echo KILLED || echo FAILED ; done netikras@netikras-PC ~ $