我在 Linode 上有一个盒子,它的行为很奇怪。CPU 和磁盘 I/O 不时会达到 100%,服务器变得无响应,必须启动。我想更好地调查发生了什么,但我不知道如何找出谁对所有这些 CPU 和 I/O 负责。我正在运行 Gentoo 2.6.18。
答案1
您可以尝试做这样的事情:
while true; do ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 >> logfile.txt; printf "\n" >> logfile.txt; sleep 3; done
这将显示 CPU 使用率最高的十个进程。您可以通过将“head -10”中的 10 更改为其他数字来更改显示的进程数,并通过更改“sleep 3”中的 3 或完全删除“sleep 3”部分来更改更新频率。
答案2
检查一下,它将写入几乎所有您可能需要的二进制日志,然后您可以使用类似 gui 的顶部来浏览一天的时间片(默认每 5 分钟获取一次数据)。http://www.atcomputing.nl/Tools/atop/
答案3
答案4
接受的答案按进程生命周期 CPU 使用率排序,而不是短期 CPU 使用率。
top
您可以使用批处理模式获取任意时间间隔内 CPU 使用率排名前十的进程:
$ top -b -n 1 -d 3 -o +%CPU | sed -e '1,/PID/d' | head -10
这里-d 3
指定间隔。根据 Ubuntu 21.10 的手册页,支持 0.1 秒倍数的间隔。如果您指定更精确的值,它不会抱怨,但我不知道它是否真的在更短的时间内进行测量。
这sed -e '1,/PID/d'
只是切断了摘要信息和标题 - 但您可能希望保留它并head
相应地增加限制。