Linux命令行定时工具crontab
1. 说明
“Wisdom is the power to put our time and our knowledge to the proper use” ~ Thomas J. Watson
crontab 是 Linux系统的命令行定时工具,用于在固定的间隔时间执行指定的系统指令或 shell script 脚本。
格式为:
# ┌───────────── minute (0–59)
# │ ┌───────────── hour (0–23)
# │ │ ┌───────────── day of the month (1–31)
# │ │ │ ┌───────────── month (1–12)
# │ │ │ │ ┌───────────── day of the week (0–6) (Sunday to Saturday;
# │ │ │ │ │ 7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * <command to execute>
# 分 时 日 月 星期 要运行的命令
注释:
- 第1列 分钟 0~59
- 第2列 小时 0~23(0表示子夜)
- 第3列 日 1~31
- 第4列 月 1~12
- 第5列 星期 0~7(0和7表示星期天)
- 第6列 要运行的命令
表达式:
- 逗号(,)表示列举,例如:
1,3,4,7 * * * * echo hello world
表示,在每小时的1、3、4、7分时,打印"hello world"。 - 连词符(-)表示范围,例如:
1-6 * * * * echo hello world
表示,每小时的1到6分钟内,每分钟都会打印"hello world"。 - 星号(*)代表任何可能的值。例如:在“小时域”里的星号等于是“每一个小时”。
- 百分号(%) 表示“每"。例如:
*%10 * * * * echo hello world
表示,每10分钟打印一回"hello world"。
2. 基本用法
Ubuntu
$ which crontab
/usr/bin/crontab
macOS
$ where crontab
/usr/bin/crontab
# 开启
sudo /usr/bin/crontab start
# 重启
sudo /usr/bin/crontab restart
# 关闭
sudo /usr/bin/crontab stop
3. 实例
可以直接在 https://crontab.guru 输入,查看想要的效果。
# 每1分钟执行一次myCommand
* * * * * 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重启执行
30 21 * * * myCommand
# 每月1、10、22日的4 : 45执行
45 4 1,10,22 * * myCommand
# 每周六、周日的1 : 10执行
10 1 * * 6,0 myCommand
# 每天18 : 00至23 : 00之间每隔30分钟执行
0,30 18-23 * * * myCommand
# 每星期六的晚上11 : 00 pm执行
0 23 * * 6 myCommand
# 每一小时执行
* */1 * * * myCommand
# 晚上11点到早上7点之间,每隔一小时执行
0 23-7 * * * myCommand