web-dev-qa-db-ja.com

指定された名前のすべてのプロセスを強制終了する方法は?

コマンドps -A | grep <application_name>を実行して、次のようなプロセスのリストを取得します。

19440 ?        00:00:11 <application_name>
21630 ?        00:00:00 <application_name>
22694 ?        00:00:00 <application_name>

リストからすべてのプロセスを強制終了したい:194402163022694

私はps -A | grep <application_name> | xargs kill -9 $1を試しましたが、エラーで動作します。

kill: illegal pid ?
kill: illegal pid 00:00:00
kill: illegal pid <application_name>

どうすればこれを優雅に行うことができますか?

17
pkill -f <application_na>

名前にパターン<application_na>を含むすべてのプロセスを強制終了します。

man pkill

26
Katu

問題はそれです ps -A | grep <application_name> | xargs -n1はこのような出力を返します

19440
?
00:00:11
<application_name>
21630
?
00:00:00
<application_name>
22694
?
00:00:00
<application_name>

awkを使用して、最初にps出力の列を取得するを使用できます。

ps -A | grep <application_name> | awk '{print $1}' | xargs -n1

PIDのリストを返します

19440
21630
22694

そしてkill -9 $1すべてのPIDを強制終了するコマンドがあります

ps -A | grep <application_name> | awk '{print $1}' | xargs kill -9 $1
11

killallはそれを行うことができます。

$ killall application_name
0
rudimeier