【Linux学习笔记】Linux获取CPU使用率,内存使用率和磁盘使用率 |
您所在的位置:网站首页 › linux如何查看硬盘使用情况信息记录 › 【Linux学习笔记】Linux获取CPU使用率,内存使用率和磁盘使用率 |
实现目标:
在Linux上使用shell脚本回显系统当前的CPU使用率、内存使用率和磁盘空间使用率 1.CPU使用率:使用top命令能够实时显示系统中各个进程的资源占用状况,所以这边可以使用top命令,截取CPU占用情况的那一段,之后输出想要的结果。 由于“top”命令是实时回显信息,不方便操作。所以使用“top -n1”,通过添加参数让top命令只显示一次结果。使用“top -n1”输出如下信息: 我想要获得CPU当前占用率,只需要使用100减去空闲CPU即可。 使用awk命令获取空闲CPU。awk默认按空格切割字符串,根据上图显示可以确认id的数值在第8个,使用100减去该值即可获取当前CPU占用率,所以使用命令“top -n1 | fgrep “Cpu(s)” | awk ‘{print 100-$8}’”,显示如下图所示: 使用free命令可以查看系统当前内存使用情况,加上-m参数能够将数据以MB大小显示出来,这里使用命令“free -m”显示当前系统内存使用情况,结果如下图所示: 我想要获得系统当前内存的占用率,只需要使用used的物理内存除以total的物理内存即可。 首先使用fgrep获取Mem的数据,如下图所示: 使用df命令可以查看磁盘使用情况,添加参数-h将数据以可读形式输出,结果如下图所示: 在知道了需要使用的命令之后,就可以开始编写shell脚本了。先使用date获取当前系统时间,之后获取CPU使用率,内存使用率和磁盘使用率。然后echo输出即可。代码如下: #!/bin/bash ############################################## #Filename: hellome.sh #Description: 监控cpu、磁盘、内存使用率 ############################################## logFile=/tmp/jiankong.log #获取报警时间 now_time=`date '+%F %T'` #获取cpu使用率 #cpuUsage=`top -b -n5 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' '{split($1, vs, ","); v=vs[length(vs)]; sub(/\s+/, "", v);sub(/\s+/, "", v); printf "%d", 100-v;}'` cpuUsage=`top -b -n1 | fgrep "Cpu" | awk '{print 100-$8,"%"}'` #统计内存使用率 #mem_used_persent=`free -m | awk -F '[ :]+' 'NR==2{printf "%d", ($3)/$2*100}'` mem_used_persent=`free -m | fgrep "Mem" | awk '{printf "%d", ($3)/$2*100}'` #获取磁盘使用率 #data_name="/dev/vda1" #diskUsage=`df -h | grep $data_name | awk -F '[ %]+' '{print $5}'` diskUsage=`df -h | fgrep "/dev/vda1" | awk '{print $5}'` function check(){ echo "当前时间:"${now_time} echo -e "CPU使用率:${cpuUsage}%\n磁盘使用率:${diskUsage}%\n内存使用率:${mem_used_persent}%" # if [[ "$cpuUsage" > 80 ]] || [[ "$diskUsage" > 80 ]] || [[ "$mem_used_persent" > 80 ]];then # echo "报警时间:${now_time}" > $logFile # echo -e "CPU使用率:${cpuUsage}% --> 磁盘使用率:${diskUsage}% --> 内存使用率:${mem_used_persent}%" >> $logFile # fi } function main(){ check } main执行脚本获得如下输出: 本学习笔记脚本所参考的文章:https://cloud.tencent.com/developer/article/1931440 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |