web-dev-qa-db-ja.com

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

シェルスクリプトを使用してこれらのジョブを強制終了する最も簡単な方法は何ですか(19849grepプロセス自体であるため)。

bashまたはzshのどちらでも問題ありません。

6
Anthony Kong

pkillを使用します:

pkill blob

これにより、パターンblobに一致するすべてのプロセスが強制終了されます。

別のアプローチはkillallですが、パターンが正規表現として解釈されるように、-rで呼び出す必要があります。

killall -r blob
5
chaos

すべての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 ~ $ 
1
netikras