我创建了一个 Unix Shell 脚本,当 cpu 使用率高于 80% 时,我尝试在其中进行线程转储。
用于计算 cpu 使用情况mpstat 1 1|tail -1
并从中获取 cpu 空闲使用情况。
然后我找到了基于的顶级 Java 线程top -b -n1 -H
,并且使用jstack -F $Thread_Nid
thread_nid 只不过是我们从中获得的 pid top-b -n1 -H
。
现在的问题是
JSTACK_OUTPUT=$(jstack -F $Thread_Nid)
echo "$JSTACK_OUTPUT" >> $logfile
当我手动运行脚本时工作正常,我在日志文件中获得了 jstack 输出,但是当我通过 crontab 运行脚本时,Jstack 输出没有进入日志文件。
手动以及通过 Crontab 都在相同的用户名下运行脚本,我已经通过在脚本运行时检查 top 命令中的用户名来验证这一点。
请让我知道我在这里做错了什么。