一行高效的 Gnu/Linux 命令来检查 CPU、RAM 和硬盘使用百分比?

一行高效的 Gnu/Linux 命令来检查 CPU、RAM 和硬盘使用百分比?

我想要一个高效的Gnu/Linux 一行命令(或组合在一起的多个命令)来检查当前的CPU、RAM 和硬盘的使用百分比。

注意:我使用的是Pythonpexpect/pxssh并每小时在 crontab 中运行一个脚本。该脚本执行 ssh 并运行适当的 Gnu/Linux 命令。


作为起点,我当前的尝试是:

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)}'`"

注意:我没有具体的预期输出。如果输出是可以理解的就足够了,如果输出采用易于存储在 python 字典中的格式(例如{ "CPU": "3", "RAM": "58", "HDD": 30"}.

其中这些数值(3,58,30)是CPU、RAM和硬盘的使用百分比。

答案1

如果您要定期运行它,我建议您创建一个小脚本来管理数据生成。它更具可读性 - 因此也更易于维护。

#!/bin/bash
#
cpu=$(LC_ALL=C top -bn1 -p0 | awk '/^%Cpu/{print 100-$8}')
mem=$(free -m | awk '/^Mem:/{printf("%3.1f\n", $3/$2 *100)}')
dsk=$(df -h / | awk '$NF=="/"{print $(NF-1)+0}')

printf '{"CPU": "%3.1f", "RAM": "%3.1f", "HDD": "%3.1f"}\n' $cpu $mem $dsk
exit 0

例子

./546179.sh
{"CPU": "53.7", "RAM": "49.3", "HDD": "46.0"}

如果您真的决心将所有这些都崩溃到一行中,那么这样做很容易,但生成的代码几乎不可读

例子

printf '{"CPU": "%3.1f", "RAM": "%3.1f", "HDD": "%3.1f"}\n' $(LC_ALL=C top -bn1 -p0|awk '/^%Cpu/{print 100-$8}') $(free -m|awk '/^Mem:/{printf("%3.1f\n",$3/$2*100)}') $(df -h /|awk '$NF=="/"{print $(NF-1)+0}')
{"CPU": "53.7", "RAM": "49.3", "HDD": "46.0"}

相关内容