shell编程实战之监控磁盘分区的使用率


本文摘自PHP中文网,作者齐天大圣,侵删。

不知道大家有没有碰到过磁盘分区写满,导致新数据写入不了,造成网站出现了问题。之前自己有几次碰到过这种情况,自己当时紧急解决办法是:删除网站的日志文件,删除了MySQL的binlog日志。

当然我们是不希望发生此类问题的,如果网站总出现不稳定或打不开情况,会给用户一种不靠谱的感觉。所以,对于磁盘分区的使用,我们需要实时监控,当超过预设值时,就发送份邮件或短信给管理员,将错误扼杀至摇篮里。

对于此脚本的编写是很简单的,主要一点就是获取到磁盘分区的使用率。我们知道df命令可以列出各个分区的空间使用情况:

1

2

3

4

5

6

7

8

9

10

11

# 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/开头的分区信息

1

2

3

4

5

# 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命令过滤不想要的信息

1

2

3

4

5

# df | grep ^/dev | awk '{print $1":"$5}'

/dev/vda1:42%

/dev/vdb1:1%

/dev/vdb2:28%

/dev/vdb3:1%

拿到各个分区的使用率后,下面就是对其进行循环遍历,依次判断各个分区的使用情况。

阅读剩余部分

相关阅读 >>

bash shell:测试文件或目录是否存在

linux中终端与shell的概念

shell脚本实现的乘法表实例

如何在shell脚本中使用逻辑或&和

linux默认使用的shell是什么

如何在shell脚本中为用户分配密码

shell编程实战之监控磁盘分区的使用率

shell实现网络client方法

linux中bash是什么意思?

shell关系运算符介绍

更多相关阅读请进入《shell》频道 >>



打赏

取消

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

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

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

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...