CentOS 5.9
Если я сбегу kill -3 <java process pid>
что на самом деле происходит? Согласно эта статья в красной шляпе, Я понимаю, что создается дамп потока Java, но завершен ли процесс? Судя по моим тестам, это не основано:
[root@foobox ~]# kill -3 14559
[root@foobox ~]# service foo status
foo (pid 14559) is running...
Другими словами: могу ли я таким образом собрать дамп потока, не влияя на службу?
С надеждой, kill -3
не завершает процесс JVM.
Дамп потока очень незначительно влияет на службу во время сбора трассировки стека, особенно если выполняются тысячи потоков.
Обратите внимание, что если -Xrs
используется флаг, JVM более конкретно не обрабатывает SIGQUIT
signal, а затем этот сигнал, скорее всего, завершит процесс, если в каком-то собственном коде не будет альтернативного обработчика.
https://superuser.com/questions/352147/what-does-kill-3-mean может предоставить вам дополнительную информацию.
Процесс должен определить, как именно он будет реагировать, когда получит SIGQUIT
Поскольку этот сигнал может быть пойман, проигнорирован или заблокирован процессом, он может не учитывать kill
. Если вы хотите узнать больше, я предлагаю трассировку PID в стеке с помощью strace
при отправке SIGQUIT
с убийством.