我读过,我可以find进程ID,然后使用kill命令将线程转储保存到文件。 但是下面的例子不会返回任何东西…
# ps aux | grep -i java wcuser 9136 0.0 17.2 3416012 1412772 ? Sl Oct10 2:32 /usr/bin/java -Djava.util.logging.config.file=/home/../conf/logging.properties ..... ...... start # kill -3 9136
什么是线程转储?
它是如何工作的?
是否有可能自动进行转储到文件定期?
它将它发送到这个过程指向的地方。 更简单的方法是使用由JDK提供的jstack。 有了这个工具,你可以简单地做:
jstack <pid> > thread-dump.out
请确保您以进程运行的用户身份执行此操作。
线程转储的内容是该Java进程中当前所有线程在堆栈中忙于何处的快照表示。 有些工具可以让你更容易地分析原始线程转储,例如VisualVM或TDA。
定期做这件事当然是可能的,只要在cronjob中join这样的陈述即可。