服务器磁盘使用空间不足会产生各种不可预知的灾难,服务器上的应用几乎全部不能用,如果没有遇到过磁盘占满的问题,可能很难发现它。
步骤
- 安装邮件发送工具sendEmail
- 磁盘检测并发送邮件shell脚本
- 宝塔配置计划任务
安装邮件发送工具sendEmail
使用 yum 安装,非常简单
yum install sendEmail
查看安装结果:
yum list installed
磁盘检测并发送邮件shell脚本
- 编写脚本 disk_check.sh
#!/bin/bash
disk_list=(`df -h | awk 'NF>3&&NR>1{sub(/%/,"",$(NF-1));print $NF,$(NF-1)}'`)
limit_value=10
msg=""
notify_email()
{
emailuser='发送邮箱'
emailpasswd='邮箱第三方授权码'
emailsmtp='smtp.qq.com' #发送邮件服务器
title='Disk Space Alarm'
for sendto in '1380xxx9024@139.com' # 要发送的邮箱(多个空格分隔)
do
sendEmail -f $emailuser -t $sendto -s $emailsmtp -u $title -xu $emailuser -xp $emailpasswd -m $msg
done
}
for (( i=0;i<${#disk_list[@]};i+=2 ))
do
i1=${disk_list[((i+1))]}
i0=${disk_list[i]};
if [ "$i1" -lt "$limit_value" ];then
echo "OK! $i0 used i1 %"
else
if [ "$i1" -gt "$limit_value" ];then
msg=$msg"Disk Warning!!! $i0 used $i1%\n"
fi
fi
done
if [ "$msg" != "" ];then
echo -e $msg| notify_email
fi
- 获取第三授权码(qq邮箱)
登录qq邮箱
【账户】
【管理服务】
【安全设置】->【生成授权码】
【扫码】
- 发送邮件服务器
在安全设置页面点击配置sMTP/IMAP方法
发送邮件服务器: smtp.qq.com
- 查看sendEmail使用说明
(1)查看sendEmail帮助文档:
sendemail --help
(2)sendEmail使用基本参数
sendemail
-f xxx@qq.com 发件邮箱
-t test@qq.com 收件邮箱
-s smtp.qq.com 发件邮箱的smtp服务器
-u ‘标题’ 邮件的主题
-o message-content-type=html 邮件内容的格式为html,也可以是text
-o message-charset=utf8 邮件内容编码
-xu xxx@qq.com 发件邮箱
-xp 123456 发件邮箱第三方授权码
-m ‘邮件内容’ 邮件的内容
宝塔配置计划任务
- 登录宝塔-计划任务
- 选择 shell脚本
- 输入任务名称
- 执行周期
- 调用/data/shell/disk_check.sh,注意要用绝对路径
- 点击添加任务