Crontab表达式
Linux 的 crontab 表达式可以用于表示任何时间,常用于定时任务的时间测算
一、表达式格式
< * * * * * * >
用 6 个 * 分别来表示 分 时 日 月 周 (年) , 其中年字段为可选
取值范围:
分(1-59)(*或*/1表示每分钟)
时(1-23)(0表示0点)
日(1-31)
月(1-12)
周(1-6)(0表示周日)
允许值:
| 字段 | 允许值 | 允许的特殊字符 |
|---|
| 秒 | 0-59 | - * / |
| 分 | 0-59 | - * / |
| 小时 | 0-23 | - * / |
| 日期 | 1-31 | - * / ? L W C |
| 月份 | 1-12 或 JAN-DEC | - * / |
| 星期 | 1-7 或 MON-SUN | - * / ? L C # |
| 年 | 1970-2099 | - * / |
二、表达式意义
-
固定时间
| 表达式 | 意义 |
|---|
| 0 12 * * ? | 每天中午 12:00 触发 |
| 15 10 ? * * | 每天上午 10:15 触发 |
| 15 10 * * ? | 每天上午 10:15 触发 |
| 15 10 * * ? * | 每天上午 10:15 触发 |
| 15 10 * * ? 2019 | 2019年的每天上午 10:15 触发 |
| * 14 * * ? | 每天下午14:00 - 14:59 每1分钟触发 |
| 0/5 14 * * ? | 每天下午14:00 - 14:55 每5分钟触发 |
| 0/5 14,18 * * ? | 每天下午14:00 - 14:55 和 18:00 - 18:55 每5分钟触发 |
| 0-5 14 * * ? | 每天下午14:00 - 14:05 每1分钟触发 |
| 10,44 14 ? 3 WED | 每年三月的周三的下午 14:10 和 14:44 分触发 |
| 15 10 ? * MON-FRI | 每周一到周五的上午 10:15 触发 |
| 15 10 15 * ? | 每月15日的上午 10:15 触发 |
| 15 10 L * ? | 每月最后一天的上午 10:15 触发 |
| 15 10 ? * 6L | 每月最后一个周六的上午 10:15 触发 |
| 15 10 ? * 6L 2019-2024 | 2019-2024年每月最后一个周六的上午 10:15 触发 |
| 15 10 ? * 6#3 | 每月第 3 个周六的上午 10:15 触发 |
-
周期触发
| 表达式 | 意义 |
|---|
| 0 */2 * * * | 每两个小时触发一次(整点) |
| */30 * * * * | 每半个小时触发一次(整点) |
| 6/12 * * * * | 从下一个 *:06 分开始,每12分钟执行一次 |
| 0 11 4 * 1-3 | 每月4日且为周一到周三的上午 11:00 执行 |
三、举例
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart