如何找出导致 CPU 使用率高的进程?

How*_*ard 2 linux unix solaris

我的 Solaris 虚拟机发生了一个奇怪的问题:启动并启动 1-2 小时后,CPU 使用率将在 5 秒内上升到 100%,然后再下降 5 秒后恢复正常,并重复这样直到重新启动 - 它使我的 Solaris 虚拟机完全无法使用。

我想知道在重复 5 秒 100% CPU 使用率期间发生了什么,但是系统在 5 秒内完全没有响应 - 甚至没有处理鼠标/键盘中断,因此我看不到使用top或的进程名称prstat

所以我想知道:

  • 导致 100% CPU 使用率的进程 ID
  • 在 100% CPU 使用率期间进程在做什么

请提出您的建议,谢谢!

小智 5

您可以尝试在批处理模式下运行 top:

top -b -n100 > top.log

其中 -n100 代表 100 次迭代。

另一种选择是使用带有适当参数的 ps(这些来自 Linux,您可能需要查阅 Solaris 中 ps 的手册页)。为方便起见,该命令被嵌入到 Bash 脚本中。

   #!/bin/bash 
   while true ; do
      ps -eo pcpu,pmem,pid,ppid,args >> process.log
      sleep 1
   done
Run Code Online (Sandbox Code Playgroud)

您可能还必须使用nice命令将进程活动记录进程的优先级更改为实时。