次のコマンドは、実行中のすべてのPIDを表示しますvmstat1
。
ps -ef | grep "vmstat 1" | awk '{ print $2 }'
私の質問は、同時に20人がいればどうやってそれらを殺すことができるかということです。
答え1
コマンドがPIDリストを生成する場合は、パイプで接続するだけです。
xargs kill
あなたのコマンドはgrepコマンドとも一致するので、|grep -v grep
元のコマンドgrep
の前にこのようなものを追加することを検討してください。
答え2
標準コマンドpkill
ではありませんが、多くのUnicesで見つかり、このタイプの操作に特に使用されます。
pkill -f 'vmstat 1'
また、あなたgrep
の意志は、(上記の場合と同様に)との親セットvmstat 1
とも一致します。より強力になるには、次のようにします。vmstat 10
grep vmstat 1
pkill
awk
grep
ps -Ao pid,args | awk '$2 == "vmstat" && $3 == "1" {print $1}' | xargs kill
または
pkill -xf 'vmstat 1'
答え3
すでにawkを使用している場合は、次のことができます。
ps -ef | grep "vmstat 1" | awk '!/grep/{ print "kill " $2 }' | bash
終了するコマンドのリストを出力し、各コマンドがプロセスを終了するので、潜在的な引数リストが長すぎることはありません(プロセスを実行するときはそうではありませんが)。一致を防ぐためのパターンを追加しました。 grepプロセス自体を終了すると、リストが短くなる可能性があります。
答え4
とても簡単です:
$ kill -9 $(pgrep -f vmstat)