今天分享个简单的监控磁盘空间脚本。其实shell脚本写起来不难,关键是你有整个脚本的思路!

    好。大概思路是这样:

         我现在想要监控/分区的空间使用量,若超过10%的话,发送一个报警短信!

         首先,我们要如何查看磁盘分区的使用量呢?

         命令:df -h 即可!

1.必须函数:

[root@localhost ~]# df
文件系统               1K-块        已用     可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
                      11109328   2154636   8381252  21% /
/dev/sda1               101086     11999     83868  13% /boot
tmpfs                  1037748         0   1037748   0% /dev/shm
[root@localhost ~]# df | sed -n '/\/$/p'
                      11109328   2154636   8381252  21% /

/$:表示以斜杠(/)结尾($)的行

       好,以上我是用sed把以/结尾的行打印出来了!

[root@localhost ~]# df | sed -n '/\/$/p' | gawk '{print $4}'
21%

$4:表示打印出第四个字段

       当打印/的行之后,再用awk打印出第四个参数,也就是21%

[root@localhost ~]# df | sed -n '/\/$/p' | gawk '{print $4}'|sed 's/%//'
21

s:替换

s/%//:表示将百分号替换成空

       最后,打印出21%之后呢,再通过sed将%符合替换为空,那么我们就可以得出21这个数了


2.创建脚本

创建一个脚本,提示当/的使用空间超过10%的时候,向ley的用户发送一封报警邮件

#!/bin/bash
#monitor available disk space

s=`df | sed -n '/\/$/p' | gawk '{print $4}'|sed 's/%//'`
if [ $s -ge 10 ]
   then
echo "$s% userd" | mail -s "Disk warning" ley
fi
~    
ley用户必须是在系统中存在的用户
******************************************************************************************
[ley@localhost ~]$ mail  查看邮件
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/ley": 5 messages 5 new
>N  1 root@localhost.local  Wed Nov  5 17:02  16/654   "Disk warning"
 N  2 root@localhost.local  Wed Nov  5 17:02  16/654   "Disk warning"
 N  3 root@localhost.local  Wed Nov  5 17:04  16/654   "Disk warning"
 N  4 root@localhost.local  Wed Nov  5 17:04  16/654   "Disk warning"
 N  5 root@localhost.local  Wed Nov  5 17:04  16/654   "Disk warning"
& 
Message 1:  第一条信息
From root@localhost.localdomain  Wed Nov  5 17:02:16 2014
Date: Wed, 5 Nov 2014 17:02:16 +0800
From: root <root@localhost.localdomain>
To: ley@localhost.localdomain
Subject: Disk warning
21% userd

      当然,这个脚本也是对于新手提供些思路而已,大牛们就请绕道了!