请问监控Linux服务器磁盘容量的脚本怎么写?

请问监控Linux服务器磁盘容量的脚本怎么写?,第1张

看看下面这个脚本(注意要用英文的标点符号):

#!/bin/bash

partion_list=( 'df -h | awk ‘NF>3&&NR>1{sub(/%/,””,$(NF-1))print $NF,$(NF-1)}’' )

critical=90

notification_email()

{

emailuser='user@qq.com' “发送邮件地址”

emailpasswd='password'“成功开启POP3/SMTP服务,在第三方客户端登录时,密码框请输入的授权码”

emailsmtp='smtp.qq.com'

sendto='user2@qq.com' “接收邮箱地址”

title='Disk Space Alarm' “邮件标题”

/usr/local/bin/sendEmail -f $emailuser -t $sendto -s $emailsmtp -u $title -xu $emailuser -xp $emailpasswd -m $emailmessage

}

crit_info=””

for (( i=0i<${#partition_list[@]}i+=2 ))

do

if [ “${partition_list[ ((i+1)) ]}” -lt “$critical” ]then

echo “ok! ${partition_list[i]} used ${partition_list[ ((i+1)) ]}%”

else

if [ “${partition_list[ ((i+1)) ]}” -gt “$critical” ]then

crit_info=$crit_info”Warning!!! ${partition_list[i]}

used ${partition_list[ ((i+1) ] }%\n”

fi

fi

done

if [ “$crit_info” != ”” ]then

echo -e $crit_info | notification_email

fi

上面脚本的功能是监控每个磁盘分区,当磁盘分区使用空间超过90%时,就通过sendEmail来发送邮件告警。sendEmail是个开源工具,可以从http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz下载;

解压后把sendEmail拷贝到/usr/local/bin下即可。

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 : 2013-11-07

# Description : this script is mointoring the linux disk

# capacity, if disk used more than 90%,

# 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 90 ]then

df -h >>$email_logfile

SendMail

exit 0

fi

done

Linux 查看磁盘空间可以使用 df 和 du 命令。

df命令

df 以磁盘分区为单位查看文件系统,可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

例如,我们使用df -h命令来查看磁盘信息, -h 选项为根据大小适当显示:

相关命令:

df -hl:查看磁盘剩余空间

df -h:查看每个根路径的分区大小

du命令

du 的英文原义为 disk usage,含义为显示磁盘空间的使用情况,用于查看当前目录的总大小。

例如查看当前目录的大小:

# du -sh

605M .

显示指定文件所占空间:

# du log2012.log

300 log2012.log

方便阅读的格式显示test目录所占空间情况:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8540631.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-17
下一篇2023-04-17

发表评论

登录后才能评论

评论列表(0条)

    保存