Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  shell  >  正文 监测硬盘空间的shell脚本

监测硬盘空间的shell脚本

发布时间:2014-11-28   编辑:www.jquerycn.cn
本文分享一段可用于监测硬盘空间的shell脚本,学习下df命令的详细用法,有需要的朋友参考下吧。

在linux中,DF命令可以显示可用的磁盘空间上的文件系统中每个文件名的空间占用数量。
如果没有指定文件名,显示所有当前挂载的文件系统的可用空间。

有关df命令的用法,可以参考如下文章:
du与df在统计linux文件占用空间上的区别
Linux磁盘管理命令df和du

脚本编写步骤分为三步,如下所示。

步骤1:取得磁盘空间:
 

复制代码 代码示例:
$ df -H
Output:
Filesystem             Size   Used  Avail Use% Mounted on
/dev/hdb1               20G    14G   5.5G  71% /
tmpfs                  394M   4.1k   394M   1% /dev/shm
/dev/hdb5               29G    27G   654M  98% /nas/www

步骤 2:过滤掉头部信息,取得空间占用百分比
 

复制代码 代码示例:

$ df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }'

Output:
71% /dev/hdb1
98% /dev/hdb5

步骤 3: 编写shell脚本
以上命令中显示df命令的字段5和1。
现在,写一个脚本来查看空间的百分比是否> =90%。

代码:
 

复制代码 代码示例:
#!/bin/sh
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo $output | awk '{ print $2 }' )
  if [ $usep -ge 90 ]; then
    echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)" |
     mail -s "Alert: Almost out of disk space $usep%" you@somewhere.com
  fi
done

设置计划任务crontab:
首先,将脚本复制到 /etc/cron.daily/ 目录中。
 

复制代码 代码示例:
# cp diskAlert /etc/cron.daily/
# chmod +x /etc/cron.daily/diskAlert

创建计划任务:
 

复制代码 代码示例:
crontab -e
10 0 * * * /path/to/diskAlert

完整脚本代码:
 

复制代码 代码示例:
#!/bin/sh
# set -x
# 监测与显示硬盘空间情况
# 当硬盘空间使用率 >= 90%,则发邮件告知系统管理员。
# Edit www.jquerycn.cn
# -------------------------------------------------------------------------
#
ADMIN="root"
# set alert level 90% is default
ALERT=90
# Exclude list of unwanted monitoring, if several partions then use "|" to separate the partitions.
# An example: EXCLUDE_LIST="/dev/hdd1|/dev/hdc5"
EXCLUDE_LIST="/auto/ripper"
#
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#
function main_prog() {
while read output;
do
#echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1)
  partition=$(echo $output | awk '{print $2}')
  if [ $usep -ge $ALERT ] ; then
     echo "Running out of space \"$partition ($usep%)\" on server $(hostname), $(date)" | \
     mail -s "Alert: Almost out of disk space $usep%" $ADMIN
  fi
done
}
if [ "$EXCLUDE_LIST" != "" ] ; then
  df -H | grep -vE "^Filesystem|tmpfs|cdrom|${EXCLUDE_LIST}" | awk '{print $5 " " $6}' | main_prog
else
  df -H | grep -vE "^Filesystem|tmpfs|cdrom" | awk '{print $5 " " $6}' | main_prog
fi

您可能感兴趣的文章:
监控硬盘空间使用率的shell脚本(图文)
监测硬盘空间的shell脚本
监控硬盘使用率的shell脚本
一个监控硬盘容量并自动发送报警邮件的shell脚本
监控linux服务器性能的shell脚本
监测服务器内存、磁盘、cpu、swap的脚本
监控linux中CPU 内存 磁盘数据的shell脚本(图文)
几个shell自动化脚本(定期清理、磁盘空间、搜寻关键字)
监控磁盘空间使用率的脚本
监测linux系统负载与CPU、内存、硬盘、用户数的shell脚本

[关闭]