shell脚本实战-实现磁盘使用率超过90%就告警的三种方法v1版
Posted 互联网老辛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本实战-实现磁盘使用率超过90%就告警的三种方法v1版相关的知识,希望对你有一定的参考价值。
需求
时刻监控磁盘使用率,达到90%就开始告警。
告警可以使用:
- 邮件告警
- 钉钉告警
- 微信告警
今天我们先来看最简单的V1的版本,实现简单需求,后面再增加功能
方法一:
awk 嵌套if循环
df -h|awk 'NR>1if(int($5)>80)print $1" (mounted on "$6") used "$5" will not enough space!^m^"elseprint $1" (mounted on "$6") used "$5" is ok"
awk这种方法,难度适中,本身AWK就作为一种变成语言存在,所以相对学起来比较难。
一条命令搞定的方法,难倒一大片小伙伴。
我们尽可能使用更清晰的方法来搞定。
方法二
最普遍的写法:
[root@UIS-cloud1 ~]# cat dftest.sh
#!/bin/bash
fnume=(`df -h |wc -l`-1)
for ((i=1;i<=fnume;i++))
do
if [ `df -h |awk 'NR>1print int($5)' |head -$i|tail -1` -gt 80 ];then
echo "`df -h |awk 'NR>1print $1" (mounted on "$6") used "$5" will not enough space!^m^"' |head -$i|tail -1`"
else
echo "`df -h |awk 'NR>1print $1" (mounted on "$6") used "$5" is ok"' |head -$i|tail -1`"
fi
done
方法二要比方法一更容易理解,不习惯读长代码的小伙伴会觉得比较难。
你可以把方法二在拆分一下。 当然对于初学的小伙伴,还是建议如下的方法三:
方法三:
更简单的方法:
[root@itlaoxin41 ~]# cat df.sh
#!/bin/bash
## 先判断文件是否存在
if [ -f df.txt ];then
`cat /dev/null > df.txt`
fi
num=`df -h |awk 'print int($5)'`
`df -h |awk 'print $1,int($5)' |grep -v "文件系统" >>df.txt`
## 打印磁盘名称和磁盘使用率
for i in $num
do
if [ $i -gt 80 ];then
disk=`grep $i df.txt |awk 'print $1'`
echo "$disk is not ok"
fi
done
方法三就比较容易了, 先判断df.txt是否存在,如果存在就清空,如果不存在在下面的脚本执行过程中,也会自己创建。
通过df -h 截取两方面的内容,一部分是磁盘名称,另一部分是磁盘使用率
后面可以为这个脚本增加邮件功能。
总结
一个脚本使用多种方法解决,可以很好的锻炼脚本能力。
另外在这个脚本的基础上,不断的加需求,直到成为一个最完美的脚本。
更多内容
没有基础的小伙伴可以参加视频课程:
https://edu.csdn.net/course/detail/38185
这套课程从零基础开始讲起,让你系统的掌握shell脚本的基础语法, 每个项目都值得深入去研究。
以上是关于shell脚本实战-实现磁盘使用率超过90%就告警的三种方法v1版的主要内容,如果未能解决你的问题,请参考以下文章