百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> shell编程实战之监控磁盘分区的运用率-linux运维
分享文章到:

shell编程实战之监控磁盘分区的运用率-linux运维

发布时间:10/01 来源:未知 浏览: 关键词:
不晓得大家有没有遇到过磁盘分区写满,致使新数据写入不了,造成网站涌现了题目。以前本人有几次遇到过这种状况,本人当时危急解决方法是:删除网站的日志文件,删除了MySQL的binlog日志。 不晓得大家有没有遇到过磁盘分区写满,致使新数据写入不了,造成网站涌现了题目。以前本人有几次遇到过这种状况,本人当时危急解决方法是:删除网站的日志文件,删除了MySQL的binlog日志。

固然我们是不但愿产生此类题目的,要是网站总涌现不不乱或打不开状况,会给会员一种不靠谱的感觉。所以,关于磁盘分区的运用,我们需要实时监控,当超过预设值时,就发送份邮件或短信给治理员,将差错抹杀至摇篮里。

关于此足本的编写是很简略的,主要一点就是猎取到磁盘分区的运用率。我们晓得df下令可以列出各个分区的空间运用状况:

# df 
Filesystem     1K-blocks     Used Available Use% Mounted on
devtmpfs         3986648        0   3986648   0% /dev
tmpfs            3999984        0   3999984   0% /dev/shm
tmpfs            3999984      528   3999456   1% /run
tmpfs            3999984        0   3999984   0% /sys/fs/cgroup
/dev/vda1       41931756 17576208  24355548  42% /
/dev/vdb1       52403200   476572  51926628   1% /data
/dev/vdb2      104806400 29255772  75550628  28% /www
tmpfs             799996        0    799996   0% /run/user/0
/dev/vdb3       52402180   398576  52003604   1% /mnt

我们可以看到各个分区的空间运用状况。然后接口grep下令以及awk下令,过滤掉其他信息,只留下各个分区的运用状况信息。

我们只想得到以/dev/开头的分区信息

# df | grep ^/dev
/dev/vda1       41931756 17576264  24355492  42% /
/dev/vdb1       52403200   476572  51926628   1% /data
/dev/vdb2      104806400 29255980  75550420  28% /www
/dev/vdb3       52402180   398576  52003604   1% /mnt

然后继续运用awk下令过滤不想要的信息

# df | grep ^/dev | awk '{print $1":"$5}'
/dev/vda1:42%
/dev/vdb1:1%
/dev/vdb2:28%
/dev/vdb3:1%

拿到各个分区的运用率后,下面就是对其进行轮回遍历,顺次推断各个分区的运用状况。

下面给出完成的代码:

#!/bin/bash
# 监控分区的空间运用状况,超过预设值告警
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:~/bin
export LANG=en

# 分区空间运用率阀值
USE_LIM=70
while ((1))
do
    disks=$( df | grep ^/dev | awk '{print $1":"$5}')
    for disk in $disks
    do
        used=$(echo $disk | cut -d: -f2 | cut -d'%' -f1)
        
        if [ "$used" -ge "$USE_LIM" ];then
            # 调取告警足本,这里直接用echo来替换了
            echo "$(echo $disk | cut -d: -f1) is used $used%"
        fi
    done
    
    sleep 10
done

注意:个别我们办事器上用的语系都是英文的,特殊是在编写shell足本的时候,倡议加上这样一行

export LANG=en

由于我们是要做实时的监控,所以足本里运用了死轮回,表示此足本不会停会不断轮回施行。固然,施行速度也是要做限定的,否则占用太多办事器资源就不太好了。所以这里运用了sleep 10,表示10秒监控一次。

别的这里还要一点需要注意,就是过滤掉百分号%。这里我们运用了cut下令来过滤掉%,然后拿到纯数字型的分区运用率和预设值做比拼。

以上就是shell编程实战之监控磁盘分区的运用率的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板