我想定期获取每个核心利用率的快照以保存到文件中,基本上与 htop 相同的信息。但是,htop 是交互式的,因此对脚本不太友好,还有其他获取此信息的方法吗?
答案1
我们的姊妹网站讨论了许多选择在 shell 脚本中获取每个核心的 CPU 负载
也许最合适的mpstat
是
$ mpstat -u -P ALL 1 1
Linux 4.15.0-23-generic (t400s) 2018-07-26 _x86_64_ (2 CPU)
12:40:13 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:40:14 PM all 3.50 0.00 1.50 0.50 0.00 0.00 0.00 0.00 0.00 94.50
12:40:14 PM 0 5.00 0.00 1.00 1.00 0.00 0.00 0.00 0.00 0.00 93.00
12:40:14 PM 1 2.02 0.00 1.01 1.01 0.00 0.00 0.00 0.00 0.00 95.96
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 3.50 0.00 1.50 0.50 0.00 0.00 0.00 0.00 0.00 94.50
Average: 0 5.00 0.00 1.00 1.00 0.00 0.00 0.00 0.00 0.00 93.00
Average: 1 2.02 0.00 1.01 1.01 0.00 0.00 0.00 0.00 0.00 95.96
htop
由于以下所述原因,直接从中获取信息并不容易:htop 输出到人类可读的文件
答案2
dstat
你可以通过以下方式轻松获得每个核心的利用率
dstat --noupdate --output cpustats.csv -c -C 0,1,2,3 60
--noupdate 当指定的延迟 > 1 时禁用中间更新,就像在这种情况下一样。
- 输出CPU 统计信息.csv将结果输出到以逗号分隔的值文件,该文件的名称可供您导入 calc 或您最喜欢的电子表格程序。将其留在屏幕上输出,如下所示。
-c 仅选择 CPU 输出
-C 0,1,2,3 报告核心 0 至 3
末尾的 60 是读数之间的延迟秒数。
您可以自由调整这些参数(以及更多参数)以获得您想要的精确输出。
dstat 很容易安装启用 Universe 存储库如果你还没有使用命令sudo apt install dstat
示例输出:
-------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------
usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq
3 1 95 0 0 0: 4 1 95 0 0 0: 3 1 95 1 0 0: 3 1 93 2 0 0
74 3 21 2 0 0: 74 3 17 5 0 0: 72 4 11 12 0 1: 73 3 20 3 0 0
更多信息请访问man dstat
答案3
考虑sysstat
(在正常的仓库中)
它top
根据请求提供类似信息。以下是使用部分的示例
12:00:01 AM CPU %user %nice %system %iowait %steal %idle
12:05:01 AM all 0.87 0.00 0.84 0.17 0.00 98.12
12:15:01 AM all 0.78 0.00 0.81 0.17 0.00 98.24
12:25:01 AM all 0.77 0.00 0.81 0.19 0.00 98.22
12:35:01 AM all 0.77 0.00 0.82 0.19 0.00 98.23
12:45:01 AM all 1.99 0.35 0.97 0.27 0.00 96.41
12:55:01 AM all 0.78 0.00 0.79 0.16 0.00 98.27
它还记录内存使用情况和通过接口的流量。
它可以相当灵活地配置以满足您的需求。
写得好这里。