crontab
crontab是用来定期执行程序的命令
命令
crontab [-u user] file
crontab [-u user] [ -e | -l | -r]
- -e 编辑任务表
- -l 列出任务表
- -r 删除任务表
基本命令
列出定时任务
crontab -l
创建定时任务
crontab -e
删除定时任务
crontab -r
基本格式详解
# crontab基本格式
# +---------------- minute 分钟(0 - 59)
# | +------------- hour 小时(0 - 23)
# | | +---------- day 日期(1 - 31)
# | | | +------- month 月份(1 - 12)
# | | | | +---- week 星期(0 - 7) (星期天=0 or 7)
# | | | | |
# * * * * * 要运行的命令
示例
# 每一分钟执行一次
* * * * * myCommand
# 每小时第3和第15分钟
3,15 * * * * myCommand
# 在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
# 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand
# 每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
# 每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
# 每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
# 每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
# 每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
# 每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart
# 每一小时重启smb
* */1 * * * /etc/init.d/smb restart
# 晚上11点到早上7点之间,每隔一小时重启smb
0 23-7 * * * /etc/init.d/smb restart
发送邮件设置
# 添加在首行
MAILTO='邮件地址'
# 不发邮件
MAILTO=''
测试
MAILTO='xxxxx@xxx.com'
*/1 * * * * echo "test" # 每隔一分钟就会发送一封邮件
注意事项
- 脚本中涉及文件路径时写全局路径
常用命令
查看日志
journalctl _COMM=crond --since=today
遇到的问题
无法发送邮件
# 打开main.cf文件
vim /etc/postfix/main.cf
# 修改内容
inet_interfaces = localhost
inet_protocols = all
# 为
inet_interfaces = all
inet_protocols = all
service postfix start
you have mail or you have new mail
cat /var/mail/<username>
sudo rm /var/mail/<username>
本文系作者 @busyhe 原创发布在 BusyHe-Blog。未经许可,禁止转载。