特定の名前を持つすべてのプロセスを強制終了するにはどうすればよいですか?


16

コマンドを実行し、次の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>

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

回答:


25
pkill -f <application_na>

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

男のスキル


9

問題は、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

これは、それはbashスクリプトに完璧な私のテストであることが、ここでは、私が欲しいものffmpegのプロセサキラーの一例であるエラーが表示されないプロセスis'ntがそれを開始した場合でも、エラーなし+とすぐプロセサを殺していますnano /usr/bin/ffmpegk 。。。。 ps -A | grep ffmpeg | awk '{print $1}' | xargs kill -9 $1 。。。。 chmod a+rx /usr/bin/ffmpegk
セーラムF

私はの出力を得るこれに伴う問題持っているkill -9がない場合、プロセスは一致
ダニエル・F

1
代わりにgrep、あなたが使用する必要があるawk名前に一致する:ps -A | awk "\$4 == \"$1\" { print \$1; }"
トビースパイツ

0

killall それができます。

$ killall application_name

すべてを殺すと、アプリケーション名に正規表現が許可されますか?
ルカシュD. Tulikowski

killall --regexp "appl.*me"異なるkillallの実装があるかもしれませんが。をご覧くださいman killall
ルディミエ

killallで十分ではない場合があります。プロセスを強制終了するために3回送信する必要があり、強制終了することさえできません kill -9 pid
セーラムF

-1
ps -eaf | grep -i applicationname| grep -iv 'grep'| awk '{print "kill -9" " "  $2}'|sh

私はまだこの質問に投票していませんが、これが他のソリューション(これに非常に類似している)と異なるまたは優れている理由を説明していないか、OPがバリエーションに問題を抱えている理由を説明していません。
ジェフシャラー

-2

私のアプローチは@に似ていŁukasz D. Tulikowskiます。使用する代わりにgrep <application_name>; grep "[a]pplication_name"独自のプロセスコマンドラインと一致しないを使用しました。

角括弧式は、grepの文字クラスパターンマッチングの一部です。(参考)


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

ps -A | grep "[a]pplication_na" | awk '{print $2}' | xargs -n1

PIDのリストを返します

7644
407
406

後で追加kill -9 $1すると、すべてのPIDを強制終了するコマンドがあります

ps aux | grep "[a]pplication_na" | awk '{print $2}' | xargs kill -9 $1

テストをより正確に行うgrep代わりに使用awkするのはなぜですか? grepたとえば、サブストリングとしてターゲットを含む名前に一致します。
トビー・スペイト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.