如何检测 CPU 负载来自 bash

How to detect where CPU load is coming from in bash

我已经为我设置的服务器创建了一些光监控脚本。

其中一个脚本测试持续高 CPU 负载,并且每天半夜发送一次通知。但是警报在每晚的不同时间发送,因此 CPU 负载似乎与我设置的任何常规 cron 作业无关。

我知道我可以使用 top 实时查看 CPU 使用情况细分,但是有没有我可以在 bash 脚本中使用的工具来报告应用程序正在使用的内容在给定时刻最多 CPU %?

尝试

ps -eo pid,cmd,%cpu --sort=-%cpu | head

此报告:

  • pid: 进程号
  • cmd: 命令
  • %cpu:已使用 cpu 的百分比
  • --sort=-%cpu:按递减 cpu 使用率排序
  • | head:只显示输出的前10行,根据需要调整。

您可以在 crontab 中设置此命令,每分钟 运行 并输出一个日志文件。它会让您了解晚上发生的事情。