检测所有磁盘分区使用率和inode使用率,当发现某分区容量或者inode量大于85%时,发邮件通知你

监控磁盘使用率

写一个shell脚本,检测所有磁盘分区使用率和inode使用率并记录到以当天日期为命名的日志文件里,当发现某个分区容量或者inode使用量大于85%时,发邮件通知你自己。

思路:1、就是先df -h 然后过滤出已使用的那一列,然后再想办法过滤出百分比的整数部分,然后和85去比较,同理,inode也是一样的思路。

2、df -h、df -i 记录磁盘分区使用率和inode使用率,date +%F 日志名格式
3、取出使用率(第5列)百分比序列,for循环逐一与85比较,大于85则记录到新文件里,当for循环结束后,汇总超过85的一并发送邮件

#!/bin/bash
[ ! -d /var/log/disk/ ] && mkdir -p /var/log/disk/
log=/var/log/disk/`date +%F`.log
date +'%F %T' > $log
df -h >> $log
echo >> $log
df -i >> $log
for i in `df -h | grep -v 'Use%'|sed 's/%//'|awk '{print $5}'|sort -u`
do
    if [ $i -ge 85 ]
    then
       use=`df -h|grep -v 'Use%'|sed 's/%//'|awk '$5=='$i' {print $1,$5}'`
       echo "$use" >> use
    fi
done
    if [ -e use ]
    then
    ca=`cat use`
    ##这里可以使用之前介绍的mail.py
    python mail.py [email protected] "Filesystem Use% check" "$ca"
    rm -rf use
    fi
for j in `df -i|grep -v 'IUse%'|sed 's/%//'|awk '{print $5}'|sort -u`
do
    if [ $j -ge 85 ]
    then
       iuse=`df -i|grep -v 'IUsed%' |sed 's/%//'|awk '$5=='$j' {print $1,$5}'`
       echo "$iuse" >> iuse
    fi
done

if [ -e iuse ]
then
        ct=`cat iuse`
    python mail.py [email protected] "Filesystem iUse% check" "$ct"
     rm -rf iuse
fi

解析:

[
! -d /var/log/disk ] && mkdir -p /var/log/disk/     
判断如果/var/log/disk/不是目录则创建/var/log/disk/目录,[ -d filename
]为文件比较运算符号,解释为,如果filename为目录则为真,加!为非。

date+ '%F %T' 为打印日期和时间。

df -h查看磁盘使用情况

df -h >> $log 将标准输出追加到$log中。

df -i 查看inode使用情况

grep -v将不符合的行打印

sed 's/%//'将%替换为空

awk '{print $5}'打印第五列

sort -u去重复

for循环这一段表达的含义是:

使用grep sed awk等过滤出df -h输出结果的整数部分,再使用if判断将这些数与85比较,大于等于85的,将df -h的第一列和第五列追加到use文件中

使用if判断,use文件是否存在,([
-e filename
]filename是否存在,如果存在则为真)。如果use文件存在,则发一封邮件,邮件内容为使用量超过85%的磁盘名和数值(即use文件的内容,这里将use文件的内容赋值给变量$ca),邮件脚本为mail.py,可以参考本人邮件博客的内容

rm 删除use文件,fi判断结束。

第二个for同上含义

此脚本正确运行前提:

该系统没有逻辑卷的情况下使用,因为逻辑卷df -h、df -i 时,使用率百分比是在第4列,而不是第5列。如有逻辑卷,则会漏统计逻辑卷使用情况。

原文地址:http://blog.51cto.com/12129628/2070794

时间: 2024-10-02 19:05:40

检测所有磁盘分区使用率和inode使用率,当发现某分区容量或者inode量大于85%时,发邮件通知你的相关文章

检测到有人登录到linux,mysql,ftp,就发邮件通知管理员

最近老板总感觉有人能登录到公司的linux系统,我排查了半天也没有找到任何蛛丝马迹,干脆设置一个陷阱,等着那个人往里走 [1]使用sendmail搭建简单邮件服务器 第一步:安装sendmail并启动服务 yum -y install sendmail /etc/init.d/sedmial start 第二步:修改mail的配置文件,即在/etc/mail.rc最后添加下面内容 set from=邮箱地址,后面必须要有@qq.com一类的字样 set smtp=smtp地址 set smtp-

检测MYSQL不同步发邮件通知的脚本

脚本代码如下:#!/bin/bash                                                                                                                # Info   : check mysql slave                                                                                            

linux inode使用率

接到公司值班报警电话:说是我负责的设备inode使用率达到91%了. 登录vpn 链接设备查看. 首先 df -h 也没发现磁盘使用突增. 后来想想 inode是文件多少的问题.跟磁盘使用没有太大的关系 然后开始找 后来发现跟crontab有关系 任务失败以后就会发邮件给用户 发邮件失败就会创造一个文件在 /var/spool/postfix/maildrop/这个目录下.我进去看了下,有90W+的文件 rm删除都不行 最后这样删除 ls -l /var/spool/postfix/maildr

CentOS下自动发邮件检测某进程是否存在

目的:利用shell脚本每小时检测数据库是否在运行,当检测到库宕掉时发邮件告警. 1.检查sendmail是否在运行 service sendmail status 没有在运行则启动或安装. 如果是linux 6,则检查postfix是否在运行 service postfix status 2.pmon是oracle五大关键进程之一,如果pmon进程不存在则库一定是关闭了,下面就用脚本检测pmon是否存在. 脚本/root/check.sh如下: #!/bin/bash source .bash

磁盘设备的发现、分区原理、普通分区、swap分区、设备加密及加密的删除

1.设备的发现 1.设备的发现 fdisk  -l                                                ##扫瞄磁盘上的分区信息 cat /proc/partitions                                ##系统识别到的设备 blkid                                                    ##系统中被格式化设备 2.磁盘分区的原理 mbr                   

检测系统磁盘空间

检测系统磁盘空间 系统磁盘空间检测是系统资源检测的重要部分,在系统维护维护中,我们经常需要查看服务器磁盘空间使用情况.因为有些业务要时时写话单,日志,或者临时文件等,如果磁盘空间用尽,也可能会导致业务中断,下面的函数可以检测当前系统磁盘空间中某个目录的磁盘空间使用情况 . 输入参数为需要检测的目录名,使用 df 输出系统磁盘空间使用信息,然后通过 grep 和 awk 过滤得到某个目录的磁盘空间使用百分比. function GetDiskSpc() { if [ $# -ne 1 ] then

fdisk分区命令详解与fdisk非交互式分区

1.说明:fdisk如何来学习 fdisk,就是在linux中用来分区的一个命令了,至于详细的参数,可以man一下,这里给出实际应用过程中最常用的用法,因为这样比起单纯讲命令的语法功能更能掌握一个命令的实际用法. 下面的过程是在我自己的实验环境中搭建,先把简要的过程看一下: (1)添加一块1GB的磁盘 (2)fdisk详细分区过程 (3)通知Linux内核分区信息的更改 (4)格式化分区 (5)挂载分区 OK!我相信这样一个过程下来,你是真正可以做到添加一块硬盘,并自己做分区格式化以及使用,这样

fdisk硬盘分区(1)——系统盘剩余空间创建分区

想必大家都应该会windows下创建新分区吧(如果不熟悉的话,下面的就不用浪费时间看了) 简单回顾分区的关键步骤 1.指定分区大小 2.分区格式化 3.指定访问入口 为啥分区要经过这几个步骤呢?我们可以用制作练习本的流程 1.我们采购一批白纸回来肯定是很大张的,所以第一步要裁剪到练习本的大小--这一步类似指定分区大小 2.然后要在纸上印上横线或者格子,方便人们写字的时候对其--这一步类似格式化 3.最后要把练习本装订成册--这一步类似指定访问入口 所以在centos上分区也要经过以上几个步骤,但

mysql表分区(摘自 MySQL表的四种分区类型)

一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区.当然也可根据其他的条件分区. 二.为什么要对表进行分区为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率. 分区的一些优点包括: 与单个磁盘或文件系统分区相比,可以存储更多的数据.对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据.相