今天分享个简单的监控磁盘空间脚本。其实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
To: ley@localhost.localdomain
Subject: Disk warning
21% userd
当然,这个脚本也是对于新手提供些思路而已,大牛们就请绕道了!