Linux上にてプロセス名に特定の文字列が含まれる物を、ワンライナーで一括で終了する方法を教えて頂けませんでしょうか。

今回の例で言い換えますと、ps aux | grep something として出てきたプロセスIDのものを一括で終了させたいです。

なお、killall shでは他のshで動いている物が消えてしまいますのでNGです。

ps aux | sh の結果サンプル
takada 22420 0.0 0.6 284376 24296 ? S Sep29 0:01 sh other
takada 22420 0.0 0.6 284376 24296 ? S Sep29 0:01 sh something 1
takada 22421 0.0 0.5 284336 23780 ? S Sep29 0:01 sh something 2
takada 22422 0.0 0.6 288784 26160 ? S Sep29 0:01 sh something 3
takada 22423 0.0 0.5 284364 23916 ? S Sep29 0:01 sh something 4

回答の条件
  • 1人2回まで
  • 登録:2009/09/30 18:16:05
  • 終了:2009/09/30 19:10:06

ベストアンサー

id:zzz_1980 No.1

zzz_1980回答回数492ベストアンサー獲得回数642009/09/30 18:30:21

ポイント60pt
kill `ps aux|grep something|grep -v grep|awk '{print $2;}'`
id:ko-takada

ありがとうございます!

echoさせるプログラムに変更し、テストしたところ上手く動きましたので、同様にkillでも動作しますね。

echo "`ps aux|grep php|grep -v grep|awk '{print $2;}'`"

757

3352

3353

12419

12420

32072

32073

2009/09/30 18:50:02
  • id:dev_zer0
    pkill -f something でいいのでは?
    http://www.linux.or.jp/JM/html/procps/man1/pkill.1.html
  • id:pyopyopyo
    pgrep something | xargs kill

    とか
  • id:ko-takada
    id:zzz_1980 さんの kill `ps aux|grep something|grep -v grep|awk '{print $2;}'`
    id: pyopyopyo さんのpgrep something | xargs kill
    これは対象のプロセスがなかったときにエラーが発生してしまいました。
    エラー内容:kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

    id:dev_zer0 さんの物ではエラーも発生せず、希望の動作を完璧に最小限のコマンドで実現出来ました。
    ありがとうございます!!
  • id:b-wind
    小ネタ
    kill `ps aux|grep something|grep -v grep|awk '{print $2;}'`
    より
    kill `ps aux|grep [s]omething|awk '{print $2;}'`
    の方が少しだけ短くて済む。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません