killallコマンドがプロセスの1つのインスタンスのみを終了するのはなぜですか?

killallコマンドがプロセスの1つのインスタンスのみを終了するのはなぜですか?

時にはGoogle Chromeを終了する必要があります(2つのウィンドウ/インスタンスが開いている場合)。両方のインスタンスいいえステルスモードで。

私がしたことは:(Debian 8で)

すべてのクロムを殺します&&すべてのクロムを殺す

クロムウィンドウ2つを閉じます。

しかし、私はそれを読んだそれらすべてを殺す命令は殺さなければならないすべてのインスタンスただプログラムではなくプログラムです。

だから私は知りたいです:名前が示すように、killallがすべてのインスタンスを殺さないのはなぜですか?

答え1

2つのプロセスを試しましたが、次のように動作します。

jai@jai-VirtualBox:/tmp$ sleep 100 &
[1] 3996
jai@jai-VirtualBox:/tmp$ sleep 60 &
[2] 3997
jai@jai-VirtualBox:/tmp$ pgrep -l sleep
3996 sleep
3997 sleep
jai@jai-VirtualBox:/tmp$ killall -v sleep
Killed sleep(3996) with signal 15
Killed sleep(3997) with signal 15
[1]-  Terminated              sleep 100
[2]+  Terminated              sleep 60

jai@jai-VirtualBox:/tmp$ pgrep -l sleep
jai@jai-VirtualBox:/tmp$ 

-v(verbose)または(interactive)再試行を使用できますか-i

答え2

topコマンドを使用してプロセスを表示できます。

top

プロセス終了

 kill PID_of_chrome

答え3

Chromeは起動時に複数のスレッドを作成し、その後に作成された各ウィンドウおよび/またはタブに対して追加のスレッドを作成します。

デフォルトでは、killallは特定の名前(あなたの場合は「chrome」)を持つすべてのプロセスにSIGTERMを送信します。ただし、信号を処理できるプロセスだけが信号を処理し続けます。 SIGTERM信号を処理できない項目は閉じません。 killall -9を使用すると、無条件に殺すことができます。

答え4

SIGTERMChromeインスタンスの1つがシグナルを無視し、確認のためにしばらく待つことは可能ですか?killall -9 chromeあなたが望むことをすることもできます。

関連情報