gpt4 book ai didi

java - 用于获取 Java 进程的线程转储的 Shell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:05 24 4
gpt4 key购买 nike

jstack我们可以获取正在运行的 Java 进程的线程转储。与 topps -aef | grep java命令,我们可以识别使用大部分系统资源的流氓进程。

所以,如果我们使用 jstack <rogue pid> >> threaddump.log我们可以获取指定java进程的thread dump。

现在我的问题是,是否有任何 shell 脚本可以识别顶级 java 进程,获取进程 id(pid),输入到 jstack实用程序并获取线程转储?

我在网上搜索过,大多数链接都需要手动输入进程 ID。所以,我只是想知道是否有任何现有的 shell 脚本可以避免手动输入。

提前致谢。

最佳答案

对我来说,这条管道有效:

ps -eo pid,%cpu,comm | grep java |sort -nr -k2 | head -n1 | awk '{print $1}' | xargs jstack

解释:

ps -eo pid,%cpu,comm : 打印所有进程的 PID CPU 使用率和命令名称

grep java : grep 所有 java 进程

sort -nr -k2 : 按第二列倒序排列结果数值

head -n1 : 打印第一行

awk '{print $1}' : 打印第一列

xargs jstack :获取输入并将其用作 jstack 命令的参数

关于java - 用于获取 Java 进程的线程转储的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40729112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com