私はいつもkill -9
を実行することを非常に躊躇しています 、しかし私は他の管理者がほぼ日常的にそれをしているのを見ます。
おそらく賢明な中間点があると思うので、
- いつ、なぜ
kill -9
利用される?いつ、なぜそうしないのですか? - それを行う前に何を試すべきですか?
- 「ハングした」プロセスをデバッグすると、さらに問題が発生する可能性がありますか?
承認された回答:
通常、kill
を使用する必要があります (kill -s TERM
の略です 、またはほとんどのシステムでkill -15
)kill -9
の前 (kill -s KILL
)ターゲットプロセスにそれ自体の後でクリーンアップする機会を与えるため。 (プロセスはSIGKILL
をキャッチまたは無視できません 、しかし、彼らはSIGTERM
を捕まえることができ、しばしば捕まえます 。)プロセスに実行中の処理を終了してクリーンアップする機会を与えないと、破損したファイル(またはその他の状態)が残り、再起動すると理解できなくなる可能性があります。
strace
/truss
、ltrace
およびgdb
スタックしたプロセスがスタックしている理由を調べるには、一般的に良いアイデアです。 (truss -u
Solarisでは特に役立ちます。 ltrace
が見つかりました ライブラリ呼び出しへの引数を使用できない形式で提示することが多すぎます。)Solarisには便利な/proc
もあります。 ベースのツール。その一部はLinuxに移植されています。 (pstack
多くの場合、役に立ちます。