通常、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
が役立つことがよくあります)。
Randal Schwartz は、リストに「(x) の無用な使用」を頻繁に投稿していました。そのような投稿の 1 つは、約 kill -9
でした .従うべき理由とレシピが含まれています。これが再構築されたバージョンです (以下に引用)。
(憎悪の引用)
ダメダメダメ。 kill -9 を使用しないでください。
プロセスにクリーンな機会を与えません:
1) ソケット接続をシャットダウンします
2) 一時ファイルをクリーンアップする
3) それがなくなることを子供たちに知らせる
4) ターミナル特性をリセットする
などなど。
通常、15 を送信して 1 ~ 2 秒待ち、それが機能しない場合は 2 を送信し、それが機能しない場合は 1 を送信します。それが機能しない場合は、バイナリを削除してください。
kill -9 を使用しないでください。植木鉢を片付けるためだけにコンバインを持ち出さないでください。
Usenet のもう 1 つの無駄な使用、
(.署名)
kill -9
を実行することは常に問題ありません。 、電源ケーブルを引っ張ってシャットダウンしても問題ないのと同じように。それは反社会的かもしれませんし、いくらか回復する必要がありますが、うまくいくはずであり、せっかちな人のための強力なツールです.
これは、単純な kill (15) を最初に試す人として言います。これは、プログラムに何らかのクリーンアップを行う機会を与えるためです。おそらく、「sig 15 で終了する」ログに書き込むだけです。しかし、キル -9 に対する不適切な振る舞いについての苦情は受け付けません。
その理由は、多くの顧客が、プログラマーが好むよりも好まないことをしているからです。 Random kill -9 テストは適切で公正なテスト シナリオであり、システムがそれを処理しない場合、システムは壊れています。