6

kill -9本番アプリケーション(正確にはLinux)でどの問題が発生する可能性がありますか?

私は定期的な作業を行うアプリケーションを持っていますが、これらを停止するには長い時間がかかります。一部のジョブが中止されるかどうかは気になりません。新しいプロセスで作業を終了できます。それで、kill -9すぐに停止するためだけに使用できますか、それとも深刻なOSの問題を引き起こす可能性がありますか?

たとえば、Unicornは、これを通常の作業手順として使用します。

アプリケーションがうまくいかない場合、BOFHは、すべてのクライアントを1つだけ破棄することを心配せずに、暴走したワーカープロセスを「キル-9」することができます。

しかし、この記事は次のように主張しています。

kill(1)の-9(またはKILL)引数は、Unixシステムでは使用しないでください。

PS:それkill -9はアプリケーションでは処理できないことは理解していますが、アプリケーションによっては問題が発生しないことはわかっていますが、OSレベルで問題が発生する可能性があると考えました。shared memory segments active, lingering sockets私には危険に聞こえます。

4

4 に答える 4

4

kill -9アプリケーションをクリーンにシャットダウンする機会を与えません。

通常、アプリケーションはをキャッチSIGINT/SIGTERMしてクリーンにシャットダウンできます(ファイルを閉じる、データを保存するなど)。アプリケーションはSIGKILL(で発生するkill -9)をキャッチできないため、この(オプションの)クリーンアップを実行できません。

より良いアプローチは、標準を使用することです。killアプリケーションが応答しないままの場合は、を使用しますkill -9

于 2010-06-05T11:42:19.860 に答える
2

kill -9「重大なOSの問題」を引き起こすことはありません。ただし、プロセスはすぐに停止します。つまり、データが奇妙な状態のままになる可能性があります。

于 2010-06-05T11:43:55.567 に答える
1

それがどんな種類のアプリケーションであるかによります。

データベースのようなものは、データを失うか(すべてのデータを永続トランザクションログに一度に書き込まない場合)、次回の起動に時間がかかるか、またはその両方である可能性があります。

クラッシュのみが適切な原則ですが、現在、クラッシュのみに準拠しているアプリケーションはほとんどありません。

たとえば、mysqlデータベースは「クラッシュのみ」ではなく、kill -9でデータベースを強制終了すると、設定に応じて(およびある程度まで)、起動時間が大幅に長くなるか、データが失われるか、またはその両方が発生します。 、 ラック)。

一方、Cassandraは、シャットダウンメカニズムとしてkill-9の使用を実際に推奨しています。それは他に何もサポートしていません。

于 2010-06-05T22:34:08.047 に答える
0

KILLシグナルをアプリケーションでキャッチすることはできません。アプリケーションを強制終了したときに、アプリケーションが複雑なデータ構造をディスクに書き込んでいる最中の場合、構造が半分しか書き込まれず、データファイルが破損する可能性があります。通常は、USER1などの他の信号を「停止」信号として実装するのが最適です。これは、これをキャッチして、アプリケーションを制御された方法でシャットダウンできるようにするためです。

于 2010-06-05T11:43:06.033 に答える