在日常工作中,我在使用定时任务的场景,一般使用Windows计划任务,或者hangfire这类的定时任务框架,因为hangfire已经实现了常用的cron表达式封装,所以一直也没去了解太多。
趁着最近有空,补习一下cron相关的知识。
认识cron表达式
cron表达式是一个字符串,用空格分隔,一般分成6或者7个字段,如:分 小时 日 月 周 年(可选)
, 在crontab
中,没有秒这项
cron表达式的用法
cron 字段可以使用特殊符号来表达出不同的意思,比如 ,
-
/
*
L
W
等符号
*
表示所在项的每个点都触发,比如 *在第一位,说明每一分钟都要触发,
表示选中的时间点,比如5,10 可以在5和10的时间点触发-
表示时间段,比如5-10 表示在5到10这个时间段,每一个点都触发/
表示除以这个数字为0,就可以触发,比如*/2
表示 每触到除以2等于0的时候,都可以触发L
是单词last的缩写,表示最后一天,比如天的位上,用L,说明是最后一天W
表示工作日,是单词weekday的缩写,表示周一到周五
比如需要每小时第5分钟执行一次 ,可以写 5 * * * *
每五分钟执行一次 */5 * * * *
每 1小时触发一次 0 */1 * * *
每周一零点触发一次 0 0 * * 6
每个月1号零点触发一次 0 0 1 * *
每月最后一天触发 0 0 L * *
使用建议
一般来说,使用cron表达式的时候,最好找个工具验证一下。毕竟人不是机器,容易出错
推荐 tool.lu/crontab/