1. ホーム
  2. シェル

[解決済み】ある名前に一致するプロセスをすべて終了させる方法は?

2022-03-30 02:18:38

質問

例えば、amarokという単語を含むプロセスをすべてkillしたいとします。実行したいコマンドをプリントアウトすることができます。しかし、実際にシェルにそれらを実行させるにはどうしたらよいでしょうか。

ps aux | grep -ie amarok | awk '{print "kill -9 " $2}'
Output:
kill -9 3052
kill -9 3071
kill -9 3076
kill -9 3077
kill -9 3079
kill -9 3080
kill -9 3082
kill -9 3083
kill -9 3084
kill -9 3085
kill -9 3086
kill -9 3087
kill -9 3088
kill -9 3089
kill -9 4031

解決方法は?

から man 1 pkill

-f     The pattern is normally only matched against the process name.
       When -f is set, the full command line is used.

ということは、例えば、以下のような行が ps aux :

apache   24268  0.0  2.6 388152 27116 ?        S    Jun13   0:10 /usr/sbin/httpd
apache   24272  0.0  2.6 387944 27104 ?        S    Jun13   0:09 /usr/sbin/httpd
apache   24319  0.0  2.6 387884 27316 ?        S    Jun15   0:04 /usr/sbin/httpd

pkill を使用して、それらをすべて殺すことができます。 -f オプションで指定します。

pkill -f httpd