Ste*_*zzo 57
这非常有效:
while true; do uptime >> uptime.log; sleep 1; done
Run Code Online (Sandbox Code Playgroud)
这将每秒记录您的 CPU 负载并将其附加到文件中uptime.log。
然后,您可以将此文件导入 Gnumeric 或 OpenOffice 电子表格以创建漂亮的图形(在导入时选择“以空格分隔”)。
正如 Scaine 所注意到的,这不足以诊断问题。因此,另外,运行这个(或在这部分使用他的答案):
while true; do (echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail) >> ps.log; sleep 5; done
Run Code Online (Sandbox Code Playgroud)
这将ps.log每五秒将前 10 个最消耗 CPU 的进程附加到一个文件中。
请注意,这并不是top您所能提供的全部信息。这只是前 10 名,以及他们的 CPU 使用率、内存使用率和第一个参数(即他们的命令没有进一步的参数,如/usr/bin/firefox)
在您使用电子表格创建图表以查看 CPU 负载何时达到峰值后,您可以搜索此文件以查找最近的时间,以查看是什么进程导致了它。
这是这些文件的样子:
正常运行时间日志
~$ cat uptime.log
22:57:42 up 1 day, 4:38, 4 users, load average: 1.00, 1.26, 1.21
22:57:43 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
22:57:44 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
22:57:45 up 1 day, 4:38, 4 users, load average: 0.92, 1.24, 1.21
...
Run Code Online (Sandbox Code Playgroud)
日志文件
%CPU %MEM ARGS Mo 17. Jan 23:09:47 CET 2011
0.7 0.9 /usr/bin/compiz
0.8 0.5 /usr/lib/gnome-panel/clock-applet
1.1 1.7 /opt/google/chrome/chrome
1.2 0.3 /usr/bin/pulseaudio
1.8 4.0 /opt/google/chrome/chrome
2.6 1.5 /opt/google/chrome/chrome
2.6 3.2 /usr/bin/google-chrome
3.6 2.6 /opt/google/chrome/chrome
4.9 1.5 /usr/bin/X
5.7 1.6 /opt/google/chrome/chrome
%CPU %MEM ARGS Mo 17. Jan 23:09:48 CET 2011
0.7 0.9 /usr/bin/compiz
0.8 0.5 /usr/lib/gnome-panel/clock-applet
1.0 1.7 /opt/google/chrome/chrome
1.2 0.3 /usr/bin/pulseaudio
1.8 4.0 /opt/google/chrome/chrome
2.6 1.5 /opt/google/chrome/chrome
2.6 3.2 /usr/bin/google-chrome
3.6 2.6 /opt/google/chrome/chrome
4.9 1.5 /usr/bin/X
5.7 1.6 /opt/google/chrome/chrome
...
Run Code Online (Sandbox Code Playgroud)
Sca*_*ine 13
您可以top使用该-b选项以批处理模式运行该命令,然后将其转储到文件中。
在您的 PC 启动时,打开一个终端,运行
top -b > ~/cpu.txt
然后,当您的 PC 死机时,只需打开(可能很大)文本文件并检查最后一个条目,了解有关崩溃前正在运行的内容的详细信息。事实上,该文件会非常大,你最好运行一个tail -250 ~/cpu.txt。
还要检查您的 /var/log/kern.log 以防您的问题与硬件有关(如果这仅在升级后发生,则不太可能,但仍然值得检查)。
小智 6
我在 Unix 和 Linux 上找到了 Christopher 对这个问题的一个很好的答案,它使用:top
top -n 1 -b > top.out
Run Code Online (Sandbox Code Playgroud)
这将为您提供 1 次迭代,top然后停止,然后将其推送到文件。