1. 最常用的两个命令:
#查看crontab定时任务列表
crontab -l
#编辑crontab定时任务列表
crontab -e
2. 一共有 5
个星号:
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 7) (星期天 为0或7) 或sun,mon,tue,wed,thu,fri,sat
| | | +---------- 月份 (1 - 12) 或jan,feb,mar,apr ...
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
3. 注意crontab每次检查间隔是1分钟
,所以如果5个都是*,表示每分钟都执行一次。
4. *
的写法总结:
- 所有时间点:直接用
*
- 指定多个时间点:直接把时间点用逗号隔开,比如
15分
和30分
执行,那就把第一个*
用15,30
替代。 - 指定时间区间:起始时间和终止时间用短横线连接,比如
3-5
- 指定时间间隔:用
/n
,例如*/2
代表全时间段每2
个单位时间执行;2-8/2
代表2-8
这个时间区间每2
个单位时间执行一次。 - 以上内容可以组合
例子:
#1月和2月的1-5号以及10号,在6-13点之间每隔2小时,以及17点,以及15/30/45分执行/home/usr/custom.sh
15,30,45 6-13/2,17 1-5,10 jan,feb * /home/usr/custom.sh
5. 一次执行多个命令的方法:
- 5.1 在脚本里写入多个命令
- 5.2 命令在crontab里面用括号括起来,中间用分号隔开,例如:
#每天7:50开启ssh服务并重启nginx
50 7 * * * (/sbin/service sshd start;systemctl restart nginx)
- 5.3 使用
run-parts
执行指定文件夹内的所有脚本
# 每周日凌晨5:30 执行/etc/cron.weekly文件夹内的脚本
30 5 * * 0 root run-parts /etc/cron.weekly
6. 启动就执行的命令
用@reboot
起头即可,最好加上延时,以免网络未就绪导致某些脚本无法顺利执行。
@reboot (sleep 60 && /root/start.sh )
7. 修改crontab默认编辑器的方法
在用户profile里面添加一行设置EDITOR
环境变量使其生效即可。例如指定为nano:
export EDITOR="/usr/bin/nano"
或者简单粗暴直接临时切换并开始编辑:
export EDITOR="/usr/bin/nano";crontab -e
注意:
- 执行脚本第一行要加上she-bang,例如
#!/bin/bash
- 脚本要有执行权限
- 脚本最好是绝对路径,可以避免很多错误
其他:
/var/spool/cron/ #该目录下存放所有用户的cron服务
/var/log/cron #记录cron运行的日志信息