私たちは定期的/etc/init.d/jboss stop
に私たちのコンピュータでjbossを停止します。ただし、時には処理が中断されず、下に貼り付けられた内容が表示されることもあります。このようなことが起こったら、我々はkill -9
。
waiting for processes to stop/usr/local/jboss/bin/run.sh
waiting for processes to stop/usr/local/jboss/bin/run.sh
waiting for processes to stop/usr/local/jboss/bin/run.sh
/usr/local/jboss/bin/run.sh
Timeout: Shutdown command was sent, but process is still running with PID 7252
[root@mercury02 ~]#
PS:/etc/init.d/jbossファイルを開き、予想kill -15
通りstop
。
ベストアンサー1
SIGTERMが機能しないのは、すべてではなく、アプリケーションが望む方法で反応しないということです。通常、SIGTERM をキャプチャする目的は、シャットダウン前にデータをディスクに同期するなど、いくつかのソート操作を実行することです。
ただし、プロセスを実際に終了する必要はないため、応答中に問題が発生した場合は終了しない可能性があります。
kill -9
一方、SIGKILL()は捕捉できず、いくつかの非常に珍しい理由を除いて、プロセスを強制的に停止する必要があります。ノンストップ(自発的に発生できない理由)問題は、これがプロセスが終了する前に実行する必要がある小さなタスクに反応して実行できないことを意味することです。これは、ディスク上のデータが一貫していないままであることを意味します。
したがって、プロセスを終了する一般的で好ましい方法はSIGTERMです。 SIGKILLが失敗した場合にのみ使用してください。この場合、正しく動作するアプリケーションではSIGKILLが必要ないため、これがなぜ必要なのか疑問に思う必要があります。つまり...
これはアプリケーションコードのバグかもしれません。
はい。