每天记录(top、iotop、iostat)输出的实时数据的任何方式

Any way to log the live data of (top, iotop, iostat) outputs on daily basis

最近我的 java 应用程序在 jboss eap 7 中遇到 运行 问题。

我的 java 应用程序派生的所有进程都已挂起,而不是 运行。当我进一步调试时,我发现 cpu 已被某个进程使用,而我的 java 应用程序没有 cpu。当我查看 linux 服务器的 sar 报告时,我可以看到“iowait”非常高(大约 96% 到 98%)

有什么方法可以找到哪个进程消耗了这么多的 iowait,有什么方法可以让我每天记录 (top, iotop, iostat) 的输出以找到根本原因,直到问题解决。 ..?

请建议我找出根本原因,在此先感谢...

与 top 非常相似,实用程序 iotop 与 top 有很多共同之处,包括使它 运行 处于批处理模式的标志,以及强制它仅执行这么多迭代的选项。 因此,您可以每隔几分钟执行一次 cron 作业 运行,并将 iotop 的输出附加到文件中。不幸的是,iotop 根本没有任何日期时间戳,所以你可能想用这样的东西添加它(这个 onlu 在 iotop 的每个 运行 的开头输出日期):

iostat -b -n 1 | awk 'NR==1 {print strftime()}; {print}' >> 日志文件

您可以通过 cron 作业每 10 分钟执行一次 运行,其中提交的分钟数为 */10。