#!/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磁盘管理常用三个命令为df、du、fdisk。
df,全称:disk full,列出文件系统的整体磁盘使用量
du,全称:disk used,检查磁盘空间使用量
fdisk,用于磁盘分区。
1、df命令
检查文件系统的磁盘空间占用情况,可以利用该命令获取磁盘被占用了多少空间,目前还剩下多少空间等信息。
语法:df[-ahikHTm][目录或文件名]
参数:
-a 列出所有文件系统,包括系统特有的/proc等文件系统
-k 以KBytes的容量显示各文件系统
-m 以MBytes的容量显示各文件系统
-h 以较易阅读的格式自行显示,比如:GBytes、MBytes、KBytes
-H 以M=1000K取代M=1024K的进位方式
-T 显示文件系统类型
-i 不用磁盘容量,以inode的数量来显示。
2、du命令
也是查看使用空间的,但是与df命令不同的是,Linux du命令是对文件和目录磁盘使用的空间进行查看,和df命令有一定的区别。
语法:du[-ahskm]文件或目录名称
参数:
-a 列出所有的文件与目录容量
-h 以较易阅读的格式显示
-s 列出总量而已,而不列出每个各别的目录占用容量
-S 不包括子目录下的统计,与-s存在差别
-k 以KBytes列出容量显示
-m 以MBytes列出容量显示。
3、fdisk命令
fdisk是Linux的磁盘分区表 *** 作工具。
语法:fdisk[-l]装置名称
参数:
-l 输出后面接的装置所有的分区内容。若仅有fdisk -l时,则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
在本教程中,我们将编写一个shell脚本来监视Linux系统上的磁盘空间使用情况。当系统达到给定阈值时,它将触发邮件到相应的电子邮件ID,我们在本文中添加了四个shell脚本,每个脚本用于不同的目的。在介绍之前,我想澄清一下我注意到的关于磁盘空间使用shell脚本的一件事。大多数用户发表评论说他们在运行磁盘空间使用脚本时收到以下错误消息:
# sh /opt/script/disk-usage-alert-old.sh
/dev/mapper/vg_2g-lv_root
test-script.sh: line 7: [: /dev/mapper/vg_2g-lv_root: integer expression expected
/ 9.8G
那就对了,其实当我第一次运行脚本时,我遇到了同样的问题,后来,我找到了根本原因。
在shell脚本中使用“df -h”或“df -H”在基于RHEL 5和RHEL 6的系统上进行磁盘空间警报时,将收到上面错误消息,因为输出的格式不正确,见下面的输出。
为了解决这个问题,我们需要使用“df -Ph”(POSIX输出格式),但默认情况下“df -h”在基于RHEL 7的系统上运行正常:
# df -h
输出如下图信息:
方法一
可以使用以下shell脚本来监视Linux系统上的磁盘空间使用情况。当系统达到给定的阈值限制时,它将发送电子邮件,在此示例中,我们将阈值限制设置为60%用于测试目的,可以根据你的要求更改此限制。
如果多个文件系统达到给定的阈值限制,它将发送多个邮件,因为脚本正在使用循环。
此外,请替换你的电子邮件ID:
# vi /opt/script/disk-usage-alert.sh
#!/bin/sh
df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output
do
echo $output
used=$(echo $output | awk '{print $1}' | sed s/%//g)
partition=$(echo $output | awk '{print $2}')
if [ $used -ge 60 ]then
echo "The partition \"$partition\" on $(hostname) has used $used% at $(date)" | mail -s "Disk Space Alert: $used% Used On $(hostname)" ywnz@gmail.com
fi
done
输出:我收到了以下两封电子邮件提醒:
The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019
The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019
最后添加一个cronjob来自动执行此 *** 作,它将每10分钟运行一次:
# crontab -e
*/10 * * * * /bin/bash /opt/script/disk-usage-alert.sh
方法二
或者,可以使用以下shell脚本,与上面脚本相比,我们在此方面做了一些改动:
# vi /opt/script/disk-usage-alert-1.sh
#!/bin/sh
df -Ph | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5,$1 }' | while read output
do
max=60%
echo $output
used=$(echo $output | awk '{print $1}')
partition=$(echo $output | awk '{print $2}')
if [ ${used%?} -ge ${max%?} ]then
echo "The partition \"$partition\" on $(hostname) has used $used at $(date)" | mail -s "Disk Space Alert: $used Used On $(hostname)" ywnz@gmail.com
fi
done
输出:我收到了以下两封电子邮件提醒:
The partition "/dev/mapper/vg_2g-lv_home" on 2g.CentOS7 has used 85% at Mon Apr 29 06:16:14 IST 2019
The partition "/dev/mapper/vg_2g-lv_root" on 2g.CentOS7 has used 67% at Mon Apr 29 06:16:14 IST 2019
最后添加一个cronjob来自动执行此 *** 作,它将每10分钟运行一次:
# crontab -e
*/10 * * * * /bin/bash /opt/script/disk-usage-alert-1.sh
方法三
非常简单明了:
*/10 * * * * df -Ph | sed s/%//g | awk '{ if($5 >60) print $0}' | mail -s "Disk Space Alert On $(hostname)" ywnz@gmail.com
输出:我收到了一封包含所有提醒的邮件,如下图:
方法四
如果有人想监视,那么可以使用以下shell脚本,只需替换你的文件系统名称:
# vi /opt/script/disk-usage-alert-2.sh
#!/bin/bash
used=$(df -Ph | grep '/dev/mapper/vg_2g-lv_dbs' | awk {'print $5'})
max=80%
if [ ${used%?} -ge ${max%?} ]then
echo "The Mount Point "/DB" on $(hostname) has used $used at $(date)" | mail -s "Disk space alert on $(hostname): $used used" ywnz@gmail.com
fi
输出:我收到了以下电子邮件提醒:
The partition /dev/mapper/vg_2g-lv_dbs on 2g.CentOS6 has used 82% at Mon Apr 29 06:16:14 IST 2019
最后添加一个cronjob来自动执行此 *** 作,它将每10分钟运行一次:
# crontab -e
*/10 * * * * /bin/bash /opt/script/disk-usage-alert-2.sh
注意:由于脚本计划每10分钟运行一次,因此你将在10分钟后收到电子邮件警报(取决于时间),比如说,如果你的系统达到8.25的限制,那么你将在另外5分钟内收到电子邮件警报。
相关主题
linux占用磁盘空间的脚本
新户专享福利!京东科技银票秒贴福利派送中!
京东科技
广告
linux 监控磁盘空间shell脚本邮件提醒
7下载·0评论
2018年11月9日
Linux - Shell脚本检查根目录的磁盘占用率
979阅读·0评论·3点赞
2021年6月25日
挂载存储媒体
225阅读·0评论·0点赞
2021年4月23日
df 命令
917阅读·0评论·0点赞
2019年12月17日
linux磁盘使用情况脚本,巧用shell脚本统计磁盘使用情况
367阅读·0评论·0点赞
2021年5月11日
linux检测磁盘 报警,linux服务器磁盘监控脚本分享(含报警邮件)
334阅读·0评论·0点赞
2021年5月14日
00:00
00:32
岚图梦想家,东风集团旗下电动豪华旗舰MPV,无锡首付0元起!
00:32
岚图梦想家
广告
shell:监控磁盘使用率,定时删除文件或文件夹
426阅读·0评论·0点赞
2020年11月10日
Linux三剑客grep、sed、awk(下篇)
85阅读·0评论·0点赞
2019年4月21日
Linux中执行shell脚本的4种方法总结
951阅读·0评论·0点赞
2022年1月7日
Linux编程——写一个shell程序,根据/home目录占用磁盘空间大小而输出相应语句
368阅读·1评论·0点赞
2021年11月7日
linux 磁盘空间监控脚本,linux下监控磁盘空间脚本
123阅读·0评论·0点赞
2021年5月11日
linux占用磁盘空间的脚本,监控linux中CPU 内存 磁盘数据的shell脚本(图文)
179阅读·0评论·0点赞
2021年5月11日
Linux/Unix shell 脚本监控磁盘可用空间
10下载·0评论
2021年1月20日
查询linux磁盘剩余空间脚本,linux磁盘空间报警脚本
451阅读·0评论·0点赞
2021年5月11日
查询Linux服务器磁盘空间脚本
475阅读·0评论·0点赞
2021年7月3日
linux磁盘使用情况脚本,用 Linux Shell 脚本来监控磁盘使用情况并发送邮件
90阅读·0评论·0点赞
2021年5月11日
shell-脚本-作用是发现前10个最占用磁盘空间的文件
205阅读·0评论·0点赞
2018年4月18日
linux占用磁盘空间的脚本,Linux磁盘空间被未知资源耗尽的解决方法
88阅读·0评论·0点赞
2021年5月11日
linux 磁盘空间监控脚本,Linux系统主机监控Shell脚本(流量、状况、磁盘空间、CPU和内存)...
62阅读·0评论·0点赞
2021年5月11日
去首页
看看更多热门内容
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)