はじめに

複数killの方法は3通りある。

  • pkillを使う
  • pgrep + xargsを使う
  • ps + awk + xargsを使う

pgrep

killする前に、pgrepでプロセスを確かめる。

$ pgrep プロセス名
2151
2152
3884

プロセス名ではなく、コマンドラインに対して検索したければ、-fを付ける。

$ pgrep -f コマンドライン名
2151
2152
2884
3884

プロセス名を表示したい場合は、-lを付ける。

$ pgrep -l プロセス名
3884 マッチしたプロセス名

あるいはpsで確かめる。

ps -ef | grep hoge

pkill

pgrepで削除したい対象が確認できたら、pgrepをpkillに変えて実行。

$ pkill -9 プロセス名

pgrep + xargs

pgrepをpkillに書きなおすのではなく、xargsを使って、pgrepの結果をkillに渡してあげてもOK。

$ pgrep プロセス名 | xargs kill -9

ps + xargs

はじめにpgrepでプロセス確認せず、psで確認していれば、psにawkとxargsを組み合わせてもOK。

ps -ef | grep hoge | grep -v grep | awk '{print $2}' | xargs kill -9