tommyk Asked: 2011-01-18 13:05:32 +0800 CST2011-01-18 13:05:32 +0800 CST 2011-01-18 13:05:32 +0800 CST 如何记录 CPU 负载? 772 如何将 CPU 负载记录到文件中以调查问题? command-line 6 个回答 Voted Best Answer Stefano Palazzo 2011-01-18T14:15:47+08:002011-01-18T14:15:47+08:00 这很好用: while true; do uptime >> uptime.log; sleep 1; done 这将每秒记录您的 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 ps.log这将每五秒将前 10 个最消耗 CPU 的进程附加到一个文件中。 请注意,这并不是top给您的全部信息。这只是前 10 名,以及它们的 CPU 使用率、内存使用率和第一个参数(即它们的命令没有进一步的参数,如 中/usr/bin/firefox) 在您使用电子表格创建图表以查看 CPU 负载何时达到最高值后,您可以在此文件中搜索最近的时间以查看是什么进程导致了它。 这就是这些文件的样子: 正常运行时间.log ~$ 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 ... ps.log %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 ... Scaine 2011-01-18T13:12:58+08:002011-01-18T13:12:58+08:00 您可以top使用该-b选项以批处理模式运行该命令,然后将其转储到文件中。 在你的电脑启动时,打开一个终端,运行 top -b > ~/cpu.txt 然后,当您的 PC 死机时,只需打开(可能很大)文本文件并检查最后一个条目以了解有关崩溃前正在运行的内容的一些详细信息。事实上,该文件将非常大,以至于您最好运行 a tail -250 ~/cpu.txt。 还要检查您的 /var/log/kern.log 以防您的问题与硬件相关(不太可能仅在升级后发生,但仍然值得检查)。 Luay 2019-11-14T22:58:20+08:002019-11-14T22:58:20+08:00 我在 Unix 和 Linux 上找到了 Christopher 对这个问题的一个很好的答案,它使用:top top -n 1 -b > top.out 这将为您提供 1 次迭代top然后停止,然后将其推送到文件中。 Mostafa 2019-09-08T00:10:58+08:002019-09-08T00:10:58+08:00 对于那些需要在 putty(SSH 客户端)会话结束后运行此命令的人。您可以使用命令screen(或使用安装它apt-get) Alfonso Tienda 2022-05-06T02:53:01+08:002022-05-06T02:53:01+08:00 我有一个用于获取进程负载的脚本,带有旋转日志: #!/bin/bash MaxFileSize=204800 DaysToKeep=7 echo -e "\n Fecha:"`date` >> /var/log/ps.log echo -e "\n Uptime: "`uptime` >> /var/log/ps.log ps -e -o pcpu,pmem,args --sort=pcpu | tail >> /var/log/ps.log #Get size in bytes** file_size=`du -b /var/log/ps.log | tr -s '\t' ' ' | cut -d' ' -f1` if [ $file_size -gt $MaxFileSize ];then timestamp=`date +%s` mv /var/log/ps.log /var/log/ps.log.$timestamp gzip /var/log/ps.log.$timestamp touch /var/log/ps.log # remove old files find /var/log -name "ps.log.*" -type f -mtime +$DaysToKeep -delete fi 我的原始来源可以在这里浏览 Gabriel Staples 2022-08-11T20:42:36+08:002022-08-11T20:42:36+08:00 这是我编写和使用的日志记录脚本:cpu_logger.py。它连续记录到一组循环日志文件。它使我可以像这样向 Google 写报告:Chrome Google Meet CPU 使用率仍然太高(请参阅 Google Meet 期间我的相机打开和关闭时的图表和 CPU 使用率)。 您也可以使用cpu_load.py。示例运行和输出cpu_load: $ gs_cpu_load Measuring CPU load for 2 seconds... Overall: 15.21% Individual CPUs: 13.60% 12.20% 15.20% 14.90% 14.60% 18.50% 15.80% 16.90% 另请参阅我的答案:堆栈溢出:如何在 Linux 上获得整体 CPU 使用率(例如 57%)和我的问答:Unix 和 Linux:如何在 Linux 上获得整体 CPU 使用率(例如 57%)。
这很好用:
这将每秒记录您的 CPU 负载并将其附加到文件
uptime.log
中。然后,您可以将此文件导入 Gnumeric 或 OpenOffice 电子表格以创建漂亮的图表(在导入时选择“以空格分隔”)。
正如 Scaine 所注意到的,这不足以诊断问题。所以,另外,运行这个(或使用他的答案来做这部分):
ps.log
这将每五秒将前 10 个最消耗 CPU 的进程附加到一个文件中。请注意,这并不是
top
给您的全部信息。这只是前 10 名,以及它们的 CPU 使用率、内存使用率和第一个参数(即它们的命令没有进一步的参数,如 中/usr/bin/firefox
)在您使用电子表格创建图表以查看 CPU 负载何时达到最高值后,您可以在此文件中搜索最近的时间以查看是什么进程导致了它。
这就是这些文件的样子:
正常运行时间.log
ps.log
您可以
top
使用该-b
选项以批处理模式运行该命令,然后将其转储到文件中。在你的电脑启动时,打开一个终端,运行
top -b > ~/cpu.txt
然后,当您的 PC 死机时,只需打开(可能很大)文本文件并检查最后一个条目以了解有关崩溃前正在运行的内容的一些详细信息。事实上,该文件将非常大,以至于您最好运行 a
tail -250 ~/cpu.txt
。还要检查您的 /var/log/kern.log 以防您的问题与硬件相关(不太可能仅在升级后发生,但仍然值得检查)。
我在 Unix 和 Linux 上找到了 Christopher 对这个问题的一个很好的答案,它使用:
top
这将为您提供 1 次迭代
top
然后停止,然后将其推送到文件中。对于那些需要在 putty(SSH 客户端)会话结束后运行此命令的人。您可以使用命令
screen
(或使用安装它apt-get
)我有一个用于获取进程负载的脚本,带有旋转日志:
我的原始来源可以在这里浏览
这是我编写和使用的日志记录脚本:cpu_logger.py。它连续记录到一组循环日志文件。它使我可以像这样向 Google 写报告:Chrome Google Meet CPU 使用率仍然太高(请参阅 Google Meet 期间我的相机打开和关闭时的图表和 CPU 使用率)。
您也可以使用cpu_load.py。示例运行和输出
cpu_load
:另请参阅我的答案:堆栈溢出:如何在 Linux 上获得整体 CPU 使用率(例如 57%)和我的问答:Unix 和 Linux:如何在 Linux 上获得整体 CPU 使用率(例如 57%)。