监视磁盘使用情况的Shell脚本(本地+远程)

任何一个分区使用到90%就发送一个邮件给指定的收件人,到95%就在邮件主题出警告(warning),说明发送邮件程序EMAIL

#!/bin/bash 
#Updated:2008-03-03 PM By:leif([email protected]) 
EMAIL=/usr/local/bin/email 
/bin/df -h >/tmp/df.txt

USE=`df -H | grep -o [0-9]*% | grep -o ‘[0-9]\+‘`

for i in $USE 
do 
if (( $i > 95 )) 
then 
$EAMIL -s “WARNING Low disk space for $i” [email protected] break 
fi 
if (( $i > 90 )) 
then 
$EMAIL -s “Low disk space for $i” [email protected] fi 
done

/bin/rm -f /tmp/df.txt

实现目的,任何一个分区使用到90%就发送一个邮件给指定的收件人,到95%就在邮件主题出警告(warning),说明发送邮件程序EMAIL,是从http://www.cleancode.org/projects/email 下载安装,比较灵活.

把这个shell根据需要放在crontab 实现定时检查磁盘情况

以下是补充内容:

用于监视远程主机磁盘使用情况的shell脚本,文件名:disklog.sh 

#!/bin/bash 
# 文件名:disklog.sh 
# 用途:监视远程系统的磁盘使用情况 
logfile="diskusage.log" 
if [[ -n $1 ]] 
then 
logfile=$1 
if 
if [ ! -e $logfile ] 
then 
printf "%-8s %-14s %-9s %-8s %-6s %-6s %-6s %s\n" "Date" "IP ADDRESS" "Device" "Capacity" "Used" "Free" "Percent" "Status" > $logfile 
fi

IP_LIST="127.0.0.1 0.0.0.0" 
# 提供远程主机IP地址列表 

for ip in $IP_LIST 
do 
ssh [email protected]$ip ‘df -H‘ | grep ^/dev/ > /tmp/$$.df

while read line; 
do 
cur_date=$(date +%D) 
printf "%-8s %-14s " $cur_date $ip 
echo $line | awk ‘{ printf("%-9s %-8s %-6s %-6s %-8s", $1,$2,$3,$4,$5); }‘

pusg=$(echo $line | egrep -o "[0-9]+%") 
pusg=${pusg/\%/}; 
if [ $pusg -lt 80 ]; 
then 
echo SAFT 
else 
echo ALERT 
fi 
done< /tmp/$$.df 
done 
)>>$logfile

我们可以用cron以固定的间隔来调度脚本执行,例如在crontab中加入如此条目,以实现每天上午10点自动运行脚本:

00 10 * * * /home/sh/disklog.sh /home/log/diskusg.log

执行crontab -e命令,添加上面一行内容并保存。

也可以手动执行:

$ ./disklog.sh

时间: 2024-08-04 11:28:40

监视磁盘使用情况的Shell脚本(本地+远程)的相关文章

Java执行shell脚本关闭远程数据库

本实例为用Java执行shell脚本启动或关闭远程Mysql数据库,需求原因:游戏服务器合服后,为了节省内存消耗,需要关闭合服后的服务器不必要的数据库(一台服务器主机存在多个MySql数据库),以提高服务器性能,但有时需要查询历史游戏玩家信息,又需要开启数据库,为了节省运维人员的人力和时间,游戏后台就提供非运维人员都可操作开关数据库的操作. 功能实现步骤: 第一:服务器后台提供参数,发送异步请求,请求方法如下 <script type="text/javascript">

Linux Shell脚本之远程自动部署java maven项目

脚本功能: 自动从git上获取java maven项目工程源码,在机器A上build,build完成后,将Class文件和配置文件等上传到机器B,重新启动机器B上的服务以便变更生效. 脚本特点: 1.(与之前的自动部署脚本相比)全新优化了脚本代码,更friendly,结构更紧凑 2.Public header删除了无用或者不好用的有色彩显示函数,并修正了WORKDIR不是绝对路径可能导致的bug 3.修正了域名解析判断是否正常的一个bug,该bug可能导致遇到无法解析后不断尝试解析 4.全新的m

shell 脚本获取远程服务器信息并发送邮件

1 [[email protected] expect]# cat ssh_dsa.exp 2 #!/usr/bin/expect 3 set ip [lindex $argv 0] 4 set pass [lindex $argv 1] 5 set port [lindex $argv 2] 6 set user [lindex $argv 3] 7 set id_dsa [lindex $argv 4] 8 9 if { $id_dsa == "1" } {set id "

管理员shell脚本

Technorati 标记: shell,df,sed,awk -监视系统统计信息 监视磁盘空闲空间 磁盘资源占用情况 监视CPU和内存使用情况 -执行备份 归档数据文件 脱机存储备份文件 监视系统统计信息 · 监视磁盘空闲空间 此shell脚本将监视特定卷上(如/)的可用磁盘空间,并在可用磁盘空间低于设置的阈值时发送一则电子邮件信息. #!/bin/bash # monitor available disk space #注意格式 变量=`值` SPACE=`df|sed -n '/\/$/p

Linux/Unix shell 脚本监控磁盘可用空间

Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少.下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考. 1.监控磁盘的空闲空间shell脚本 [python] view plain copy print? [email protected]:~/dba_scripts/custom/bin> more ck_fs_space.sh #!/bin/bash # --------------------------------------------

Shell脚本:向磁盘中批量写入数据

一.关于本文 工作要做的监控系统需要监控磁盘空间的使用率并报警.在测试这个功能的时候需要模拟两个场景:一是磁盘空间不断增长超过设定的阈值时,需要触发报警机制:二是磁盘空间降落到低于报警阈值的时候,不再进行报警.为了测试这两个场景,我写了下面三个脚本: 1)initializer.sh:创建目录TestDir,并创建一个大文件template 2)duplicator.sh:不断复制文件template,直到磁盘空间使用率超过输入的参数为止 3)cleaner.sh:清除前面两个脚本留下的痕迹,即

找出1小时内占用cpu最多的10个进程的shell脚本

cpu时间是一项重要的资源,有时,我们需要跟踪某个时间内占用cpu周期最多的进程. 在普通的桌面系统或膝上系统中,cpu处于高负荷状态也许不会引发什么问题.但对于需要处理大量请求的服务器来讲,cpu是极其重要的资源. 通过监视某个时期内cpu的使用情况,我们可以找出长期占用cpu的进程并对其进行优化,或调试其它相关问题. 在linux系统中,ps命令用于收集系统中进程的详细信息.这些信息包括cpu使用情况.正在执行的命令.内存使用.进程状态等.记录在一个小时内占用过的cpu的进程,然后通过恰当地

【原】Java程序调用远程Shell脚本

此程序的目的是执行远程机器上的Shell脚本. [环境参数]远程机器IP:192.168.234.123用户名:root密码:rootShell脚本的路径:/home/IFileGenTool /BakProvisionAndOccurEntrance.sh [具体步骤]1.在远程机器上,准备Shell脚本.[[email protected] IFileGenTool]# vim ./load_data.sh 1 #!/bin/sh 2 source /etc/profile 3 dbName

自动化部署java maven项目到多个目标主机的Shell脚本

本篇是<Linux Shell脚本之远程自动化部署java maven项目>的姊妹篇,但包含了bug.issue修正和添加了更多的支持特性,可以从GitHub上获取最新脚本内容:https://github.com/DingGuodong/AutomaticDeployJavaMavenProject . 自动化部署java maven项目到多个主机的环境条件假设: 1.java maven项目至多有一个依赖项目 2.多个目标主机上的部署目录是相同的 支持特性: 1.在部署主机上将java m