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