一张显示 CPU、RAM 和 HDD 使用情况的衬垫

Kar*_*son 15 command-line monitoring

我已经看到一些帖子想要关于使用的相同内容,但是答案总是指安装一些第三方工具。

我不想安装任何东西。

有内衬吗?以下将是一个不错的输出:

CPU 11% RAM 20% HDD 85%
Run Code Online (Sandbox Code Playgroud)

MKa*_*Kay 31

你可以用这个

echo "CPU `LC_ALL=C top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}'`% RAM `free -m | awk '/Mem:/ { printf("%3.1f%%", $3/$2*100) }'` HDD `df -h / | awk '/\// {print $(NF-1)}'`"
Run Code Online (Sandbox Code Playgroud)

输出是

CPU 7.4% RAM 33.9% HDD 94%
Run Code Online (Sandbox Code Playgroud)

  • 如果你有很多分区,HD 部分会很糟糕。 (2认同)
  • @OskarSkog 你的 `top` 没问题。无法测量当前时间点的 CPU 使用率,必须在较短的时间跨度内测量。当 `top` 运行第一次迭代时,它会显示自上次重启以来的平均使用情况。从第二次迭代开始,它显示自上次迭代以来的实际当前使用情况。如果您在本地化方面遇到问题,您可以将 `LC_ALL=C` 放在命令前面以使用默认的英语本地化(数字格式等,而不是语言)。 (2认同)
  • @MKay:您可能想要替换`top -bn1 | grep "Cpu(s)"` 与 `top -bn2 | grep "CPU(s)" | 尾-n1`。前者将显示 Byte Commander 指出的长期平均值。 (2认同)

Byt*_*der 8

对于 CPU 使用率(平均(user+system)/(user+system+idle)时间超过 0.1 秒):

(grep 'cpu ' /proc/stat;sleep 0.1;grep 'cpu ' /proc/stat)|awk -v RS="" '{print "CPU "($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5)"%"}'
Run Code Online (Sandbox Code Playgroud)

对于 RAM 使用量 ( (total-available)/total):

awk '/MemTotal/{t=$2}/MemAvailable/{a=$2}END{print 100-100*a/t"%"}' /proc/meminfo
Run Code Online (Sandbox Code Playgroud)

对于 HDD 使用(仅限安装为 的卷/):

df | awk '/ \/$/{print "HDD "$5}'
Run Code Online (Sandbox Code Playgroud)

  • @OskarSkog “-/+ 缓冲区/缓存”行被删除,现在“内存”行中有一个附加列“可用”。来自`man free`:“*估计有多少内存可用于启动新应用程序,无需交换。与缓存或空闲字段提供的数据不同,该字段考虑了页面缓存,并且并非所有可回收的内存块都将由于 /proc/meminfo 中的 MemAvailable 项目正在使用而被回收,在内核 3.14 上可用,在内核 2.6.27+ 上模拟,否则与免费相同)*” (3认同)