「kill -9」/ SIGKILLを使用しない理由


14

この質問を投稿したのは、直接回答が見つからないことに驚いたからです。これが重複している場合は謝罪-私は見た!

聞いたことがあるkill -9kill -SIGKILL悪いかはわかりますが、理由はわかりません。私はべきでない場合はkill -9何をすべきである私は、プロセスを殺すためにですか?


2
質問の前提は間違っています。SIGKILLは単なるツールです。状況によっては推奨され、他の状況では推奨されません(他のすべてのツールと同様)。
クバンチク

@kubanczykは確かですが、それはしばしば誤用されるツールであり、その目的を理解せずに使用されています。私はAが言う多くのスレッドを見てきました「だけでkill -9、それは」、OPは言う、「素晴らしい、働いている!私が!今からそれを覚えているだろう」、とBは警告するで来る「待ち時間がkill -9危険です!」だけ事実の後。
-dimo414

回答:


15

SIGKILL実行中のプロセスからラグを引き出し、すぐに終了します。非常に単純なプログラムの場合、これで十分です。しかし実際には、「単純な」プログラムはほとんどありません。

カバーの下では、finallyリソースハンドルを閉じる、一時ファイルを削除する、データをフラッシュするなど、終了する前にクリーンアップする必要のあるあらゆる種類のトランザクション作業(Javaや他のプログラミング言語のブロックを考える)ディスクへのメモリ。プログラムがいつこのようなことをしているのかを予測することはできません。

運が良ければ、を送信してもおかしいことに気付かないでしょうが、SIGKILL永遠に幸運になることはできません。また、失われたものを回復するには手遅れになるまで、何が間違っているのか分からないかもしれません。

を送信する必要はほとんどありませんし、送信するSIGKILL前に選択肢を使い果たしたことを確認する必要があります。多くの場合、リブート(最終的にSIGKILLsを不正な動作をするプログラムに送信しSIGKILLます)は、手動で自分自身を送信するよりも安全です。私はおそらく、私が送信する必要がある回数を数えることができますSIGKILL(そしておそらく私自身の作成のすべて)。

一般的に、Ctrl+ C(フォアグラウンドプロセスaを送信するSIGINT)またはSIGTERM(「終了」のように)を使用して、プロセスの実行を停止して終了するようにプロセスに指示できます。

さらにいくつかの読書:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.