大家好,咱们今天来聊聊怎么用好Crontab做分钟级的定时任务,这就好比给系统里的时间精度上了个锁。首先看一下Crontab的语法格式,从左往右依次是分钟、小时、日、月、星期,每一位数在0-59或者0-23之间浮动,大家直接用空格隔开就行。它还支持范围、列表和步进这三种写法,就像下图那样,这张“时间表”其实就是个迷你折叠卡,随时揣兜里就能查。 在用命令行真正把任务提交到Crontab之前,强烈建议大家先去在线cron表达式测试器里跑一遍,确认下一次触发时间是不是你想要的“明天早上7点”,这样一来就能省掉90%的烦恼,再也不会对着屏幕说“怎么不按计划跑呢?” 接下来咱们直接上例子。想要让脚本每分钟都跑一次,只需要在第一格填上数字就可以了。如果想让它每小时的第3分和第15分各执行一次,就把这两个数字用逗号隔开放在分钟位。 想要在上午8点到11点之间每隔两小时跑一次,那就这么写:3,15 8-11 /2。想要限定在星期一这一天的上午8点到11点执行,就给周字段填个1。要是每天21:30定点跑,直接写30 21就完事了。 每月1号、10号和22号的4:45要触发任务,就把这些日子写成1,10,22放在日期栏。想让它在每周六和周日的凌晨1:10运行,把周字段写成6,0就行。 每天18点到23点每30分钟跑一次,注意只能在分钟位用“-”来指定范围,前面别乱加“/”。如果只是想要每小时执行一次,“/1”和“*”其实是一样的效果,“*”代表每小时。 还有些夜间维护的任务需要在23:00到次日7:00之间每小时都执行一次,用“23-7/1”就能搞定。想在新年第一天凌晨4点触发程序执行计划?直接给月份写个“jan”就行了。 要是让脚本每小时的第5分钟转一下日志(日志轮转),就把“5”填在分钟位上。每天早上5:30上班打卡?直接写30 5就行了,日月字段留空没问题。 每月8号7:30发条生日祝福短信?写30 7 8就行,因为当日字段全填数字时默认是当月。如果要跨月执行可以用“/8”。 最后是年度特定日期执行年报生成的任务?比如6月8日5:30,就这么写:30 5 8 6,年月日全填数字且周字段留空就行。如果需要匹配多日,直接用逗号隔开就行啦。