实现目标:
在Linux上使用shell脚本回显系统当前的CPU使用率、内存使用率和磁盘空间使用率
1.CPU使用率:
使用top命令能够实时显示系统中各个进程的资源占用状况,所以这边可以使用top命令,截取CPU占用情况的那一段,之后输出想要的结果。
由于“top”命令是实时回显信息,不方便操作。所以使用“top -n1”,通过添加参数让top命令只显示一次结果。使用“top -n1”输出如下信息:
根据上图所显示的结果可以看出,CPU占用数据在第三行,所以我现在只需要第三行的数据。第三行的数据里有关键字“Cpu(s)”,使用fgrep命令可以根据关键字按行查找信息。所以此时我的命令变成了“top -n1 | fgrep “Cpu(s)””,运行结果如下图所示:
上图显示的是CPU的各类占用率:
- us:用户空间占用CPU百分比
- sy:内核空间占用CPU百分比
- ni:用户进程空间内改变过优先级的进程占用CPU百分比
- id:空闲CPU百分比
- wa:等待输入输出的CPU时间百分比
- hi:硬件中断
- si:软件中断
- st:虚拟机占用物理机的百分比
我想要获得CPU当前占用率,只需要使用100减去空闲CPU即可。
使用awk命令获取空闲CPU。awk默认按空格切割字符串,根据上图显示可以确认id的数值在第8个,使用100减去该值即可获取当前CPU占用率,所以使用命令“top -n1 | fgrep “Cpu(s)” | awk ‘{print 100-$8}’”,显示如下图所示:
2.内存使用率:
使用free命令可以查看系统当前内存使用情况,加上-m参数能够将数据以MB大小显示出来,这里使用命令“free -m”显示当前系统内存使用情况,结果如下图所示: