私はいつも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 多くの場合、役に立ちます。