kill -9に応答しないプロセスをkillする方法


9

SLES 10.1を実行しているSGI Altix 450のプロセスが実行を停止しているように見えます(つまり、ログに何時間も出力されない)。この時点で、問題のプロセスを強制終了して、再開できるようにしたいと考えています。上は、プロセスが(R)状態であることを示しています。私がそれを殺そうとしたとき、何も起こりませんが。私がkill -9を使用しても、それはまだ残ります。この場合、マシンを再起動する以外に何ができますか?


2
それらは間違いなく同じプロセスIDですか?プロセスを強制終了していて、一部のデーモンが同じ名前のプロセスを再起動しているのではありませんか?
CK。

回答:


9

プロセスが強制終了されたが、親がその戻り値を収集するのを待っている可能性があります。その場合、強制終了後は「R」ではなく「Z」の状態になります。その場合、コマンドをppid使用してプロセスを見つけps、親プロセスも強制終了する必要があります(本当に問題がない場合は、問題が発生しないはずです)。

もう1つのケースは、何らかの理由でttyのように強制終了された後にプロセスが再起動している場合です。その場合、プロセスIDは、kill -9を実行するたびに変更する必要があります。プロセスIDを強制終了しようとするたびにプロセスIDが変化しているかどうかを確認します。


私は親プロセスを殺そうとしていると思います。(R)状態にあるのは親プロセスです。pstreeはこれを確認します。子プロセスはすべて(Z)ゾンビ状態です。ppidは静的なままなので、単純に再起動しているとは思いません。
Jared Brown、

親プロセス(およびその親プロセスなど)を強制終了すると、initは「Z」状態の子プロセスの親になり、その戻り値を収集します。したがって、親が戻り値を取得していない 'Z'の子を削除する最良の方法は、initが死んだ子プロセスの親になるように親を強制終了することです。
Saurabh Barjatiya、2009

これが私が抱えている問題です。killを介して親プロセスに-9シグナルを送信しても、シグナルは終了しません。
Jared Brown、

1
SIGHUPを親に送信するだけで十分な場合もあります。あなたはいつも親を殺す必要はありません。
トーマス

2
すみません、SIGCHLD。(早すぎる)
トーマス

2

プロセスは、NFSなどのシステムリソースを待機していますか?それはそれが「手放す」ことを許可していません。これに対する私の解決策を聞いてみたいです...

ボックスを再起動するか、プロセスをそのままにします。

kill -STOP {PID}を使用してプロセスを「停止」して、より多くのCPUを消費しないようにすることができるのではないかと思います。

別の停止したプロセスが残っていても再起動は可能ですが、他のプロセスでまだ使用されているリストポートまたは共有メモリセグメントが必要になる場合があります。


1
NFSまたはいくつかのI / O関数が完了するのを待っていたプロセスは(D)状態ではないのでしょうか?これらのプロセスは(R)状態です。
Jared Brown、

これはls、s3fsマウントでコマンドを実行したときに時々起こっていることです。私がアンマウントを強制するまで、lsプロセスは殺されませんkill -9umount -l
マルコマルサラ

0

まだdmesgをチェックしましたか?カーネルパニックの後でこれを見ました。回復する唯一の方法は、再起動(できればすぐに)してから、パッチを当てたカーネルを入手することです。

通常の強制終了できないプロセスは、RではなくD状態になります。


再起動以外のD状態のハードプロセスについては何ができますか?ppid = 1
Moriarty教授
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.