本文介绍: 实现目标:在Linux使用shell脚本回显系统当前的CPU使用率内存使用率磁盘空间使用率1.CPU使用率:使用top命令能够实时显示系统中各个进程资源占用状况,所以这边可以使用top命令截取CPU占用情况的那一段,之后输出想要的结果。由于“top命令实时回显信息,不方便我们操作。所以我们使用“topn1”,通过添加参数top命令显示一次结果。使用“topn1”输出如下信息:学习时间提示这里可以添加计划学习时间例如:周一至周五晚上 7 点—晚上9点周

实现目标:

在Linux上使用shell脚本回显系统当前的CPU使用率内存使用率和磁盘空间使用率


1.CPU使用率:

使用top命令能够实时显示系统中各个进程资源占用状况,所以这边可以使用top命令截取CPU占用情况的那一段,之后输出想要的结果。

由于“top命令实时回显信息,不方便操作。所以使用“topn1”,通过添加参数top命令只显示一次结果。使用“topn1”输出如下信息:
top -n1回显
根据上图所显示的结果可以看出,CPU占用数据第三行,所以我现在只需要第三行的数据第三行的数据里有关键字“Cpus)”,使用fgrep命令可以根据关键字按行查找信息。所以此时我的命令变成了“topn1 | fgrep “Cpu(s)””,运行结果如下图所示
在这里插入图片描述
上图显示的是CPU的各类占用率:

我想要获得CPU当前占用率,只需要使用100减去空闲CPU即可
使用awk命令获取空闲CPU。awk默认空格切割字符串,根据上图显示可以确认id数值在第8个,使用100减去该值即可获取当前CPU占用率,所以使用命令“topn1 | fgrep “Cpu(s)” | awk ‘{print 100-$8}’”,显示下图所示
在这里插入图片描述

2.内存使用率:

使用free命令可以查看系统当前内存使用情况,加上-m参数能够数据以MB大小显示出来,这里使用命令“freem”显示当前系统内存使用情况,结果如下图所示
在这里插入图片描述

我想要获得系统当前内存的占用率,只需要使用used的物理内存除以total的物理内存即可
首先使用fgrep获取Mem的数据,如下图所示
在这里插入图片描述
之后使用awk截取并显示内存占用率,使用输出函数printf保留一位小数,结果如下图所示:
在这里插入图片描述


3.磁盘使用率:

使用df命令可以查看磁盘使用情况,添加参数h将数据以可读形式输出,结果如下图所示:
在这里插入图片描述
/dev/vda1这行显示的是当前总磁盘使用情况,先使用fgrep命令获取一行的数据,之后直接awk输出磁盘使用率(Use%)即可。结果如下图所示:
在这里插入图片描述

4.编写shell脚本

知道需要使用的命令之后,就可以开始编写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

原文地址:https://blog.csdn.net/qing_dan_mo_cai/article/details/123938464

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_46304.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注