前言
之前有个定时任务, 需要每天的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, 21点和2点
- -: eg:- 5-105点到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
 
- …
最后过下来, 其任务时间的表达也不过这几种形式, 想来可以应对大多数定时的场景了.
后面用到不至于再抓瞎了. 简单记录, 留作后面查找.