頑固なプロセスを殺す方法

頑固なプロセスを殺す方法

死なない迷惑なプロセスがあります。

ps -A | grep "nzbget" 

私にしてください:

11394 pts/3    00:00:00 nzbget

私が試した場合:

pkill nzbget (or 11394)

...答えはありません。プロセスはまだ進行中で、上部には次の内容が表示されます。

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
11394 asystem+  20   0  125448   6244   4984 T   0.0  0.1   0:00.00 nzbget

"nzbget -s"を使用してnzbgetを実行し、実行後にこれを実行すると(そして停止しようとすると)[ソケットバインディングに失敗しました]エラーが発生し、再起動するだけです。

再起動せずにどのように終了できますか?

答え1

プロセスが停止すると*(Tのステータス出力を参照top)、信号処理はまったく実行できません。したがって、プロセス相互作用を必要としない信号を使用する必要があります。あなたの場合SIGKILL(9)は以下のようになります。

kill -9 11394

何らかの理由でプロセスのコアダンプを取得したい場合(そしてシステムがそれに対して設定されている場合)のSIGSEGV代わりに(11)を使用できます。また、プロセス相互作用は必要ありません。

*追跡されたプロセスはシグナルを処理できなければならず、これがプロセスを停止する可能性があるため、ここで停止すると仮定します。

答え2

kill -9 11394次のコマンドを呼び出すineleganceを使用してプロセスを完全に終了できます。

~からLinux/UNIX コマンドラインで最も重要な 3 つの「kill」シグナル:

カーネルはプロセスに知らせずにプロセスを解放します。このような不正確なシャットダウンはデータを失う可能性があります。これは、最も「最も難しく」「最も粗く」、最も安全ではないキルシグナルであり、一見できないように見えるのを止めるためにのみ使用できます。

答え3

試してみることができるさまざまなシグナルがあり、他の人がそれをリストすることを確信しています。しかし、私が見つけた最も効果的な信号は次のとおりですHUP

kill -hup 11394

私はアプリケーションが他の信号に応答しない多くの場合、これが機能することを発見しました。失敗した場合はこれを行うことができますkill -9。ただし、プラグを抜くだけでアプリケーションが整理されないため、副作用がある可能性があります。

答え4

Xアプリケーションの場合、xkillを使用してコマンドラインの終了に応答しないときにアプリケーションウィンドウをクリックすると幸運でした。

関連情報