这个任务涉及到Crontab, mailx,下面逐个介绍。
Crontab
Linux运行后,默认会启动守护进程crond,crond进程会定期执行crontab配置的命令
sudo service crond status
/etc/cron.allow: 白名单。只有在该文件中的用户可以使用crontab。
/etc/cron.deny: 黑名单。在该名单中的用户不能使用crontab。
假如这两个文件都不存在,则只有superuser能使用crontab。
经试验证明,同时在两个文件中的该用户可以使用crontab。
编辑用户的crontab配置
crontab -e
crontab配置文件保存在/var/spool/cron/<user_name>。
crontab格式
# Minute Hour Day of Month Month Day of Week Command
# (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat)
0 2 12 * * /usr/bin/fin
/: 前表示起始,表示间隔。
*: 匹配所有
, 给出一个列表。
- 给出一个闭区间。
20-30/1 1 * * * echo "its lunch time" >> ~/cronout.txt
表示每天凌晨01:20 - 01:30这个闭区间内,每隔一分钟执行一次。
查看crontab
crontab -l
- /etc/cron.hourly
- /etc/cron.daily
- /etc/cron.weekly
- /etc/cron.monthly
将需要执行的脚本放入上述目录即可定期执行。
mailx
-s subject
mailx -s "Disk space is over 80% full" xxx@163.com
最终代码如下:
[oracle@odilab ~]$ crontab -l
0 10 * * * ~/3.sh
vi ~/3.sh
#!/bin/sh
if [[ `df -h | grep "/$" | awk "{print $4}"` > "80%" ]]; then
mailx -s "Disk space is over 80% full" xxx@163.com
fi