Crontab 的语法和使用
Crontab 时间的语法:
Minute Hour Day Month DoW
每一个选项默认都是第几的意思
- Minute, 每小时的第几分, 可选值 0-59
- Hour, 每天的第几个小时, 可选值 0-23
- Day, 每月的第几天, 可选值 1-31
- Month, 每年的第几个月, 可选值 1-12
- DoW, 每周的第几天, 可选值 0-7, 0 和 7 都代表 Sunday
- Command, 要执行的命令
另外:
- 用 * 表示所有
- 可以用逗号分隔指定多个
- 用
*/xx
表示每 xx 一次
比如
5 * * * * echo "hello world"
每小时的第五分钟打印 hello world
更多地例子
* * * * * 每分钟
12 * * * * 每小时第 12 分
0,15,30,45 * * * * 每小时的第 0, 15, 30, 45 分, 也就是每15分钟一次
0 4 * * * 每天的凌晨 4 点
0 4 * * 2 每周二的凌晨 4 点
*/4 2-6 * * * 2点和6点之间每 4 分钟一次, 也就是 0, 4, 8...
crontab 命令
应该使用 crontab 命令来编辑 crontab 文件, tab 就是 table 的缩写
crontab -e # 编辑 crontab
crontab -l # 列出 crontab
crontab -u # 指定用户
crontab 还支持一些特殊语法
@hourly 相当于 0 * * * * 也就是每小时执行
@daily 相当于 0 0 * * * 也就是每天执行
@weekly 相当于 0 0 0 0 0
monthly
@yearly
@reboot at reboot
NOTE:
# add these line to tweak cron behavior
SHELL=/bin/bash
HOME=/
MAILTO="example@digitalocean.com"
Cron 表达式的局限性
cron 表达式难以表达 "every x" 这个语义。比如说每隔 9 个小时如何, 每隔 13 分钟如何如何。