如何在Linux和Unix中将“kill -3 <jvm pid>”的标准输出单独重定向到文件?

4

我在Linux平台上启动了一个JVM进程,例如Tomcat Web容器。

启动命令行:

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

在标准Unix进程保护策略中,程序启动后,不允许在没有该程序的主动帮助下对其流进行更多的重定向。

但是,如果你不在意线程转储仍然存在于nohup.out文件以及其他一些文件中,那么可以按照以下方式进行:

tail -f nohup.out > my_new_threaddump &
kill -3 $pid_target_process
kill %+

1
它指的是最后一个启动的后台作业。请参阅man bash搜索jobspec - A.H.

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接