SLES 10.1を実行しているSGI Altix 450のプロセスが実行を停止しているように見えます(つまり、ログに何時間も出力されない)。この時点で、問題のプロセスを強制終了して、再開できるようにしたいと考えています。上は、プロセスが(R)状態であることを示しています。私がそれを殺そうとしたとき、何も起こりませんが。私がkill -9を使用しても、それはまだ残ります。この場合、マシンを再起動する以外に何ができますか?
SLES 10.1を実行しているSGI Altix 450のプロセスが実行を停止しているように見えます(つまり、ログに何時間も出力されない)。この時点で、問題のプロセスを強制終了して、再開できるようにしたいと考えています。上は、プロセスが(R)状態であることを示しています。私がそれを殺そうとしたとき、何も起こりませんが。私がkill -9を使用しても、それはまだ残ります。この場合、マシンを再起動する以外に何ができますか?
回答:
プロセスが強制終了されたが、親がその戻り値を収集するのを待っている可能性があります。その場合、強制終了後は「R」ではなく「Z」の状態になります。その場合、コマンドをppid
使用してプロセスを見つけps
、親プロセスも強制終了する必要があります(本当に問題がない場合は、問題が発生しないはずです)。
もう1つのケースは、何らかの理由でttyのように強制終了された後にプロセスが再起動している場合です。その場合、プロセスIDは、kill -9を実行するたびに変更する必要があります。プロセスIDを強制終了しようとするたびにプロセスIDが変化しているかどうかを確認します。
プロセスは、NFSなどのシステムリソースを待機していますか?それはそれが「手放す」ことを許可していません。これに対する私の解決策を聞いてみたいです...
ボックスを再起動するか、プロセスをそのままにします。
kill -STOP {PID}を使用してプロセスを「停止」して、より多くのCPUを消費しないようにすることができるのではないかと思います。
別の停止したプロセスが残っていても再起動は可能ですが、他のプロセスでまだ使用されているリストポートまたは共有メモリセグメントが必要になる場合があります。
ls
、s3fsマウントでコマンドを実行したときに時々起こっていることです。私がアンマウントを強制するまで、ls
プロセスは殺されませんkill -9
umount -l
まだdmesgをチェックしましたか?カーネルパニックの後でこれを見ました。回復する唯一の方法は、再起動(できればすぐに)してから、パッチを当てたカーネルを入手することです。
通常の強制終了できないプロセスは、RではなくD状態になります。