Linux shell磁盘监控

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux shell磁盘监控相关的知识,希望对你有一定的参考价值。

用df 检查磁盘占用率,如果磁盘占用率较高,用du命令分析出该磁盘占用率高的主要原因在于那个目录的文件比较大。这脚本怎么写,并加上注释说明!

shell是用来进行人机交互的接口,所以通过一些命令,我们可以使用shell来进行系统磁盘的信息收集和分析,然后进行进一步的操作

shell进行磁盘监控需要使用的命令有

    df -查看分区大小

    du - 查看磁盘空间命令

    fdisk -分区表查看命令

    其他一些小的linux命令

具体的操作可以分成以下几步

    确定你需要监控的磁盘分区,这个可以通过fdisk和df来获取

    通过命令查看分区大小,检查分区剩余空间,通过脚本判断空间是否还有空余

    发送邮件通知自己,进行最后的数据收集


参考技术A df -h

cd /
du -sh *

如何监控linux阿里云磁盘空间

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
参考技术A 直接去yun.cloudbility.com,导入主机,监控图表一目了然,并且还能设置微信报警

以上是关于Linux shell磁盘监控的主要内容,如果未能解决你的问题,请参考以下文章

如何监控linux阿里云磁盘空间

Linux之Shell脚本实战监控系统的磁盘空间使用率

用 Linux Shell 脚本来监控磁盘使用情况并发送邮件 | Linux 中国

linux实现shell脚本监控磁盘内存达到阈值时清理catalina.out日志

Linux下Shell脚本实战之监测磁盘空间

Linux下每天自动执行查看磁盘剩余空间的shell文件