Linux系统中需要监控磁盘各分区的使用情况,避免由于各种突发情况,造成磁盘空间被消耗殆尽的情况,例如某个分区被Oracle的归档日志耗尽,导致后续的日志文件无法归档,这时ORACLE数据库就会出现错误。监控磁盘空间的使用情况,其实有许多工具,例如Nagios等,其实最简单的还是使用Shell脚本。下面就介绍一下如何通过Shell脚本和Crontab作业结合来实现对磁盘空间的监控、告警。

一般查看磁盘各分区的使用情况可以通过df命令来查看,网上有两种获取磁盘使用百分比的Shell脚本。

1:df -h | grep /dev | awk '{print $5}' | cut -f 1 -d "%"

2:df -h | grep /dev | awk '{print $5}' | sed 's/%//g'

但是这两个命令还是有些bug,例如如下截图所示:当显示内容过长,导致换行时。此时上面的Shell脚本就无法获取其值。

尤其是某些特殊情况下,完全无法准确获取相应数据

此时只需在参数上稍微做一下调整即可

1:df -P | grep /dev | awk '{print $5}' | cut -f 1 -d "%"

2:df -P | grep /dev | awk '{print $5}' | sed 's/%//g'

下面脚本是用来监控各分区使用情况,当超过阀值(默认为90%)时,发出告警邮件,通知管理员及时处理。

#*************************************************************************
# FileName : disk_capatiy_alarm.sh
#*************************************************************************
# Author : Kerry
# CreateDate : --
# Description : this script is mointoring the linux disk
# capacity, if disk used more than %,
# then it will send a alarm email
#************************************************************************* #! /bin/bash email_content="/home/oracle/scripts/output/disk_sendmail.pl"
email_logfile="/home/oracle/scripts/output/diskdetail.txt"; cat /dev/null > ${email_content};
cat /dev/null > ${email_logfile}; SendMail()
{ date_today=`date +%Y_%m_%d`
subject="The server xxxxxx\'s Disk Capacity Alarm"
content="Dear All, The server xxxx(xxx.xxx.xxx.xxx) disk capacity alarm ,please take action for it. many thanks! " echo "#!/usr/bin/perl" >> ${email_content}
echo "use Mail::Sender;" >> ${email_content}
echo "\$sender = new Mail::Sender {smtp => 'xxx.xxx.xxx.xxx', from => 'xxx@xxx.com'}; ">> ${email_content}
echo "\$sender->MailFile({to => 'kerry@xxx.com',">> ${email_content}
echo "cc=>'xxxx@xxxx.com'," >> ${email_content}
echo "subject => '$subject',">> ${email_content}
echo "msg => '$content',">> ${email_content}
echo "file => '${email_logfile}'});">> ${email_content} perl ${email_content} } for d in `df -P | grep /dev | awk '{print $5}' | sed 's/%//g'` do if [ $d -gt ]; then df -h >>$email_logfile; SendMail; exit ; fi done

Linux磁盘空间监控告警的更多相关文章

  1. (转)Linux磁盘空间监控告警 && Linux磁盘管理

    Linux磁盘空间监控告警 http://blog.csdn.net/github_39069288/article/details/73478784-----------Linux磁盘管理 原文:h ...

  2. Linux学习之CentOS(十七)-----释放 Linux 系统预留的硬盘空间 与Linux磁盘空间被未知资源耗尽 (转)

    释放 Linux 系统预留的硬盘空间  大多数文件系统都会保留一部分空间留作紧急情况时用(比如硬盘空间满了),这样能保证有些关键应用(比如数据库)在硬盘满的时候有点余地,不致于马上就 crash,给监 ...

  3. Linux磁盘空间被未知资源耗尽【转】

    Linux磁盘空间被未知资源耗尽 在linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间, ...

  4. Linux磁盘空间扩容(LVM)

    Linux磁盘空间扩容(lvm) 随着系统的运行时间增长,业务数据的增长,原有磁盘的空间会存在空间不足情况,导致系统不能正常运行,或者系统管理员磁盘没有完全划完,根据使用者的需求自行划分.那么怎么才能 ...

  5. linux磁盘空间使用问题

    linux磁盘空间用满的处理方法 linux下空间满可能有两种情况 可以通过命令 df -h  查看磁盘空间占用,实际上是查看磁盘块占用的文件(block) df -i  查看索引节点的占用(Inod ...

  6. 查看Linux磁盘空间大小命令

    发表于:2012-09-17 10:25   查看Linux磁盘空间大小 一.df 命令: df 是来自于coreutils 软件包,系统安装时,就自带的:我们通过这个命令可以查看磁盘的使用情况以及文 ...

  7. linux磁盘空间满了 但是没有大文件

    很常见的一个问题 linux磁盘空间满了 但是没有大文件 解决思路: 1.用df 检查发现/根目录可用空间为0 [root@/]#df -h 2.用du检查发现各目录占用的空间都很少,有约3G的空间莫 ...

  8. Linux磁盘空间不足

    Linux磁盘空间不足 描述:zabbix报警磁盘空间不足 1.登录服务器,查看磁盘空间 2.筛选空间占用的文件 层层筛选 3.将没用的文件删除 rm -f /opt/export/log/np_se ...

  9. linux磁盘空间满的处理

    Java中运行SQL插入数据时报错: linux磁盘空间满处理: 1.df -h  查看磁盘空间占用,实际上是查看磁盘块占用的文件(block) 2.分别查看输入以下命令 (面对磁盘满了,通过下列命令 ...

随机推荐

  1. ASP.NET网站优化(转自一位博友的文章,写的非常好)

    不修改代码就能优化ASP.NET网站性能的一些方法 阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一 ...

  2. 相克军_Oracle体系_随堂笔记003-体系概述

    1.进程结构图 对Oracle生产库来讲,服务器进程(可以简单理解是前台进程)的数量远远大于后台进程.因为一个用户进程对应了一个服务器进程. 而且后台进程一般出问题几率不大,所以学习重点也是服务器进程 ...

  3. JS代码实现的聊天框

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. js实现可拖拽的div

    前言 下午忙里偷闲想写一个可拖拽的例子,留在脑海里一直都是三个事件mouseDown,mouseUp,mouseMove, 但从没有动手实践过,今天想起了自己实践了并学习了张鑫旭的demo实现. 学习 ...

  5. 【面试】shuffle函数的实现

    一.前言 有位同学面试的时候被问到shuffle函数的实现,他之后问我,我知道这个函数怎么用,知道是对数组(或集合)中的元素按随机顺序重新排列.但是没有深入研究这个是怎么实现的.现在直接进入JDK源码 ...

  6. OpenGL超级宝典visual studio 2013开发环境配置,GLTools

    做三维重建需要用到OpenGL,开始看<OpenGL超级宝典>,新手第一步配置环境就折腾了一天,记录下环境的配置过程. <超级宝典>中的例子使用了GLEW,freeglut以及 ...

  7. ASP.NET MVC 使用 FluentScheduler 定时器计划任务

    MacBook Pro 只有四个 USB Type-C 接口是否错了? 一项新技术的诞生总会对已存在的事物造成冲击或影响,如果大家都害怕冲击与影响,那这个世界永远像现在不变就行了,大家都好好的,待在自 ...

  8. SEO技巧之WordPress篇幅

    随着搜索引擎大兴, 排列在前的网站引入大量流量. 无论是搜索页面的广告还是查出来的结果, 与搜索者的目标匹配度都比较高 (如果搜索引擎足够智能), 所以通过搜索引擎而来的访客很可能会从网站上得到他想要 ...

  9. C#程序开发中经常遇到的10条实用的代码

    1 读取操作系统和CLR的版本 OperatingSystem os = System.Environment.OSVersion; Console.WriteLine("Platform: ...

  10. Mono.Cecil 初探(一):实现AOP

    序言 本篇文章介绍基于Mono.Cecil实现静态AOP的两种方式:无交互AOP和交互式AOP. 概念介绍 Mono.Cecil:一个可加载并浏览现有程序集并进行动态修改并保存的.NET框架. AOP ...