Как перенаправить стандартный вывод kill -3 <jvm pid> в файл отдельно в Linux и Unix? - PullRequest
3 голосов
/ 12 февраля 2012

Я запускаю процесс jvm на платформе linux, такой как веб-контейнер tomcat. командная строка запуска:

nohup sh> nohup.out 2> & 1 &

Когда я беру команду "kill -3", информация о дампе потока будет выводиться в файл nohup.out.

Как я могу перенаправить вывод в файл отдельно?

Sun HotSpot JVM - это собственный инструментарий от jdk 1.5, который называется jstack, он очень полезен при использовании Sun HotSpot JVM, но JRockit JVM и HP HotSpot JVM, IBM J9 VM не подходят.

Как написать хороший набор инструментов для перенаправления информации о дампе потока в один файл, а не в файл stdout?

Ответы [ 2 ]

2 голосов
/ 12 февраля 2012

В стандартную политику защиты процессов Unix входит то, что после запуска программы больше нельзя перенаправлять ее потоки без активной помощи этой программы .

Но если вам все равно, что threaddump все еще находится в nohup.out и дополнительно в каком-то другом файле, вы можете сделать это следующим образом:

tail -f nohup.out > my_new_threaddump &
kill -3 $pid_target_process
kill %+
0 голосов
/ 28 апреля 2014

Интерес представляет связанный kill -3 для получения дампа потока java , включая ответ Вадима:

-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=jvm.log

Однако это не так (или, по крайней мере, не использовалбыть) совместимым с JRockit и т. д. - например, см. http://blog.eisele.net/2011/01/running-glassfish-with-jrockit.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...