前言
之前有个定时任务, 需要每天的9点和21点定时跑. 当时我是这么写的:
0 9 * * * XXX
0 21 * * * XXX
当时经过高人指点, 发现这两条命令可以写成一条:
0 9,21 * * * XXX
好羞耻... 于是, 我决定整理一篇crontab
的语法. 防止下次再出现这尴尬的场景..
指令
命令行
- crontab -l : 查看当前用户的定时任务
- crontab -e : 编辑当前用户的定时任务
基本有这俩就够用了. 主要是整理一下定时任务的命令格式
定时任务
命令格式如下:
min h d m w XXX
- min: 分钟(0-59)
- h: 小时(0-23)
- d: 日(1-31)
- m: 月(1-12)
- w: 星期(0-7) // 0,7都是周日
- XXX: 要执行的命令
命令的含义是: 在指定的时间执行指定命令.
其中针对时间设置有以下几个分割方式:
*
: 通配符. 表示每一个时刻/
: 整除标志. eg:*/5
当时间点能被5整除时.,
: eg:1, 2
1点和2点-
: eg:5-10
5点到10点L
: 最后一个(仅星期有效). eg:5L
. 最后一个星期五W
:最接近的工作日(仅月有效). eg:15W
. 最接近15号的工作日.#
: 第几个(仅星期有效). eg:5#3
. 第3个星期五.
举例
- 每三小时执行一次
0 */3 * * * XXX
- 周一到周五每天下午五点
0 17 * * 1-5 XXX
- 每天2,3,4点执行
0 2,3,4 * * * XXX
- 每天上午两小时执行一次
0 0-12/2 * * * XXX
- 每月第三个星期五12点执行
0 12 * * 5#3 XXX
- 每月最后一个星期五12点执行
0 12 * * 5L XXX
- ...
最后过下来, 其任务时间的表达也不过这几种形式, 想来可以应对大多数定时的场景了.
后面用到不至于再抓瞎了. 简单记录, 留作后面查找.