本文摘自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》频道 >>
转载请注明出处:木庄网络博客 » shell编程实战之监控磁盘分区的使用率