web-dev-qa-db-ja.com

名前にフレーズを含むプロセスを強制終了するにはどうすればよいですか?

説明にmyNameを含むプロセスを強制終了する必要があります。現在私がやっている:

ps -ax |grep myName
I see PID
kill -9 PID

PIDを入力せずに1つのコマンドで同じことができますか?

10
vico

myNameが強制終了するプロセス/実行可能ファイルの名前である場合、次を使用できます。

pkill myName

pkillはデフォルトでSIGTERMシグナル(シグナル15)を送信します。 SIGKILLまたはシグナル9が必要な場合は、次を使用します。

pkilll -9 myName

myNameがプロセス名でない場合、またはたとえば、別の(長い)コマンドの引数である場合、pkill(またはpgrep)は期待どおりに動作しない可能性があります。したがって、-fオプションを使用する必要があります。 man killから:

-f, --full
              The pattern is normally only matched against the  process  name.
              When -f is set, the full command line is used.
NOTES
The process name used for matching is limited to the 15 characters present
   in the output of /proc/pid/stat.  Use the -f option to match  against  the
   complete command line, /proc/pid/cmdline.

そう:

pkill -f myName

または

kill -9 $(pgrep -f myName)
17
Ron

コマンド名を使用して:

pkill -9 myscript

コマンドラインで文字列を探している場合:

kill -9 $(ps ax | grep myName | fgrep -v grep | awk '{ print $1 }')

警告する必要があります:上記のコマンドは、SIGKILLシグナルを複数のプロセスに送信できます。

6
Jay jargot

pkillsignal 9を送信すると、名前でプロセスを強制終了できます。

Sudo pkill -9 myName
3
siz

検索用語またはコマンド名の一部を入力できる2つの非常にきれいなコマンドpgreppkillがあり、プロセスのPIDを提供するか、(pkill)そのプロセスを強制終了します。

$ pgrep -f firefox                                                             
23699

pkillおよび-fフラグを使用して同じコマンドを実行すると、すべてのFirefoxウィンドウが閉じます。

-fフラグは、プロセスのコマンドライン全体を検索するために特に必要です。

1

次のように、特定のプロセス名に関連付けられたすべてのPIDに対して簡単なfor loopを実行できます。

$ for i in $( ps ax | awk '/[m]yName/ {print $1}' ); do kill ${i}; done

これは、Wordを含むすべてのプロセスを強制終了します:myName

1
krt