「kill -9」が動作しない場合はどうなりますか?

「kill -9」が動作しない場合はどうなりますか?

終了できないプロセスがありますkill -9 <pid>。特に私はプロセスの所有者なので、この場合の問題は何ですか?私はこの選択から抜け出すことができないと思いますkill

答え1

kill -9信号を殺す)プロセスを終了する権限がある限り、常に機能します。デフォルトでは、プロセスはsetuidまたはsetgid以外のユーザーによって開始される必要があります。それ以外の場合はrootユーザーでなければなりません。 1つの例外があります。ルートラもinitPID 1(プロセス)に致命的な信号を送信できません。

しかし、kill -9効果が保証されるわけではありませんまもなく。すべての信号(SIGKILLを含む)は非同期で転送されます。カーネルが信号を送るのに少し時間がかかることがあります。通常、信号を送信するのに最大数マイクロ秒かかります。これは、ターゲットがタイムスライスを取得するのにかかる時間とまったく同じです。ただし、対象がある場合信号をブロックしました、信号はターゲットがロックを解除するのを待ちます。

通常、プロセスはSIGKILLをブロックできません。ただし、カーネルコードは実行され、プロセスは呼び出されるとカーネルコードを実行します。システムコール。システムコールが中断されると、カーネルコードはすべての信号をブロックし、カーネルのどこかに誤ったデータ構造が発生するか、より一般的にはいくつかのカーネル不変性に違反します。したがって、(バグや設計エラーが原因で)システムコールが無期限にブロックされている場合、実際にプロセスを終了することは不可能です。 (しかし、その過程は〜するシステムコールが完了すると終了します。 )

システムコールでブロックされたプロセスは、次の場所にあります。邪魔されない睡眠psまたは、コマンドはtop(ほとんどの unice で)ステータスを表示しますD(元は「D私の考えでは)。

中断されない長いスリープモードの一般的なケースは、プロセスがファイルにアクセスする場合です。ネットワークファイルシステムサーバーが応答しない場合、最新の実装では中断のない省電力モードが適用されない傾向があります(たとえば、Linuxではカーネル2.6.25以降、SIGKILLはNFSアクセスでブロックされたプロセスを中断します)。

プロセスが長時間中断せずにスリープモードになっている場合は、デバッガを接続して次の診断ツールを実行してこれを実行できます。ストレスまたは(またはUNIXタイプに応じて同様のツール)または次のような他の診断メカニズムを使用してください。/proc/PID/syscallLinuxで。バラより「kill -9」を使用してwgetプロセスを終了することはできません。中断のない睡眠プロセスを研究する方法についてのさらなる議論。

時には、または出力で表示されているものを見ることができますZ(またはHLinuxでは違いが何であるかわかりません)。技術的には、これらはプロセスではなく、ゾンビプロセスであり、親プロセスが子プロセスの終了を知らせるように維持されるプロセステーブルのエントリにすぎません。親プロセスが実行されると消えます。pstop集中する(または死)。

答え2

時にはプロセスが存在しますが、次の理由で終了できません。

  • ゾンビになります。つまり、親プロセスが終了ステータスを読み取っていません。これらのプロセスは、PIDエントリを除いてリソースを消費しません。topZでマーク
  • 邪魔されない睡眠が間違っています。これは起こってはいけませんが、欠陥のあるカーネルコードおよび/または欠陥のあるハードウェアの組み合わせが原因で発生します。唯一の方法は、再起動または待つことです。topDが信号を送信します。

答え3

あなたも一つぐらいはあるようです。ゾンビプロセス。これは無害です。ゾンビプロセスが消費する唯一のリソースは、プロセステーブルのエントリです。親プロセスが死亡した場合、または子プロセスが死亡すると消えます。

top次のコマンドを使用して、プロセスがゾンビプロセスであることを確認できます。

ps aux | awk '$8=="Z" {print $2}'

答え4

もし@マセイ'砂@ザイルズ答えは問題を解決せず、プロセスを認識しません(そしてディストリビューションが何であるか尋ねても答えが見つかりません)。ルートキットやその他の感染症の兆候を確認してください。所有する。ルートキットはプロセスの終了を完全に防ぐことができます。実際、多くの人があなたがそれを見るのを防ぐことができます。ただし、小さなプログラムを変更することを忘れた場合は、それが発生する可能性があります(たとえば、プログラムを変更しても変更していtopない場合htop)。そうではない可能性が高いですが、後悔するよりも安全を保つことをお勧めします。

関連情報