-9と生産アプリケーションを殺します
-
24-10-2019 - |
質問
どの問題が引き起こす可能性がありますか kill -9
生産アプリケーション(正確にはLinux)?
定期的な作業を行うアプリケーションがあり、これらの時間に時間がかかることを停止します。いくつかのジョブが中止されるかどうかは気にしません - 新しいプロセスによって作業を終了できます。だから私は使用できます kill -9
すぐに停止するか、これが深刻なOSの問題を引き起こす可能性がありますか?
例えば、 ユニコーン, 、通常の作業手順として使用します。
アプリケーションが不安になると、BOFHは、すべてのクライアントを1つだけ引き裂くことを心配することなく、暴走労働者のプロセスを「殺す」ことができます。
でもこれは 論文 請求:
(1)を殺すための-9(またはkill)議論はUNIXシステムで使用しないでください
PS:私はそれを理解しています kill -9
アプリケーションでは処理することはできませんが、アプリケーションでは問題を引き起こさないことを知っています。OSレベルでいくつかの問題を引き起こす可能性がありますか? shared memory segments active, lingering sockets
私には危険に聞こえます。
解決
それはどんな種類のアプリケーションであるかによって異なります。
データベースのようなものは、データを失う可能性があります(すべてのデータを一度に永続的なトランザクションログに記述しない場合)、または次回の起動に時間がかかるか、その両方です。
それでも クラッシュのみ 良い原則であり、現在それに準拠しているアプリケーションはほとんどありません。
たとえば、MySQLデータベースは「クラッシュのみ」ではなく、キル-9でそれを殺すと、設定(およびある程度まで)に応じて、かなり長い起動時間、データ損失、またはその両方が発生します。 、 幸運)。
一方で、 カサンドラ 実際に、シャットダウンメカニズムとしてキル-9の使用を奨励しています。それは他に何もサポートしません。
他のヒント
kill -9
アプリケーションにきれいにシャットダウンする機会を与えません。
通常、アプリケーションはaをキャッチできます SIGINT/SIGTERM
きれいにシャットダウンします(ファイルを閉じ、データを保存します)。アプリケーションはキャッチできません SIGKILL
(aで発生します kill -9
)そして、これはこの(オプションの)クリーンアップのいずれかを実行できません。
より良いアプローチは、標準を使用することです kill
, 、およびアプリケーションが反応しない場合は、使用してください kill -9
.
kill -9
「深刻なOSの問題」を引き起こしません。しかし、このプロセスはすぐに停止します。つまり、データは奇妙な状態になる可能性があります。
キル信号は、アプリケーションによってキャッチできません。アプリケーションがそれを殺したときにディスクに複雑なデータ構造を作成する途中である場合、構造は半分しか書かれていないため、破損したデータファイルになります。通常、user1などの他の信号を「停止」信号として実装するのが最善です。これは、これをキャッチでき、アプリケーションを制御された方法でシャットダウンできるようにするためです。