2

我需要一些命令行片段来获取当前的 CPU 使用率(百分比)和当前的网络带宽使用率。

获取我发现的 CPU-Usagetop -bn1 | grep "Cpu(s)" 但它总是给我

%Cpu(s): 12,3 us, 3,6 sy, 0,0 ni, 83,7 id, 0,3 wa, 0,0 hi, 0,0 si, 0,0 st

此命令给出的数字永远不会改变。我试图将服务器设置为重负载,我也得到了 83.7% 的空闲。

我也发现ps aux|awk 'NR > 0 { s +=$3 }; END {print "cpu %",s}' 这些值正在改变,看起来不错,但我得到的值是

403.8

407.3

524.6

553.2

而且我不知道,这些值意味着我的计算机中有 4 个内核,所以我希望 400% CPU-Usage 意味着所有内核都在 100% 但是我怎么能有超过 400% 的使用率呢?即使,如果 htop 说平均 CPU 使用率约为 3 - 5%

对于网络流量监视器,我没有发现任何可用的东西。我只需要以 kbps 为单位的输入/输出数字即可在另一个程序/脚本中使用它们

非常感谢您的帮助四:)

4

2 回答 2

2

对于网络使用情况,您可以直接从/proc/net/dev.

于 2013-01-10T13:07:56.477 回答
2

试试这个命令uptime,它会为您提供过去 1、5 和 15 分钟的正常运行时间和负载平均值。

带宽可以在文件中/sys/class/net/$1/statistics/rx_bytes找到/sys/class/net/$1/statistics/tx_bytes

您应该记住当前值,并在一秒钟后再次查看以获取当前带宽使用情况。

关于负载的一句话:很多人认为 CPU 使用率是一种有用的衡量标准。这是不正确的。很容易拥有一个系统,其中许多进程正在等待数据(网络、磁盘等),但由于它们正在等待,CPU 负载将很低。如果您尝试在这样的系统上工作,它仍然会感到迟钝。

因此,系统负载是衡量系统“繁忙程度”的更好指标。

你应该看看atop那些持续监控系统并为你提供历史数据的工具,比如过去占用 CPU 的进程。(介绍

编辑总是打印相同结果的原因top -bn1 | grep是因为您正在测量top自身的启动。您需要在很长一段时间内运行监视器,然后才能开始使用它为您提供的值。

于 2013-01-10T13:09:32.247 回答