web-dev-qa-db-ja.com

kill -3は実際にJavaプロセスを終了しますか?それともスレッドダンプを生成しますか?

CentOS 5.9

kill -3 <Java process pid>実際に何が起こりますか? このRed Hatの記事 のように、Javaスレッドダンプが生成されますが、プロセスは終了しますか?私のテストに基づいていないようです:

[root@foobox ~]# kill -3 14559

[root@foobox ~]# service foo status
foo (pid 14559) is running...

つまり、サービスに影響を与えることなく、この方法でスレッドダンプを収集できますか?

4
Mike B

うまくいけば、kill -3はJVMプロセスを終了しません。

スタックトレースの収集中、特に何千ものスレッドが実行されている場合は、スレッドダンプがサービスに与える影響はごくわずかです。

-Xrsフラグを使用すると、JVMはSIGQUITシグナルを特に処理しなくなり、そのネイティブコードに代替ハンドラーが配置されていない限り、そのシグナルはプロセスを終了する可能性があります。

6
jlliagre

https://superuser.com/questions/352147/what-does-kill-3-mean により詳細な情報が提供される場合があります。

SIGQUITを受け取ったときにどのように反応するかは、プロセス次第です

そのシグナルはプロセスによってキャッチ、無視、またはブロックされる可能性があるため、killを尊重しない場合があります。さらにピアリングしたい場合は、PIDをstraceでスタックトレースしながら、killでSIGQUITを送信することをお勧めします。

5
inetplumber