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