IP=$(ifconfig eth0 |grep "inet addr"| awk '{print $2}' |cut -f1 -d":") a=$(df -h |grep /dev/sda2 |awk '{print $5}'|cut -f1 -b"%" ) #截取分区使用率
if [ $a -ge 80 ] then echo "$IP 服务器根分区即将没有空间,请及时清理。" |mail -s "$IP 根分区检测" xxx@163.com
fi
这里我使用163邮箱,相关设置查看一下链接
https://blog.csdn.net/zh314js/article/details/76038868 转自csdn
以上为最初写,sh直接执行没有报错并且当使用率大于80时,会正常向邮箱发送相关警告,但是当写入crontab定时任务时如下:
*/2 * * * * /shell_script/disk_check.sh
邮箱收到的邮件 中文以及$IP都未正常显示,两个问题的原因都是环境变量导致,crontab运行时已经不是用户的环境了,
针对中文乱码问题:
echo $LANG 先查看语言环境比如是:zh_CN.GB2312
在脚本中添加行: export LANG=zh_CN.GB2312
针对$IP无法显示问题:
在脚本中添加行: source /etc/profile
原文地址:http://blog.51cto.com/11820620/2119648