最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【整理】如何读懂cron的值的真正含义即计算出命令执行的具体时间

含义 crifan 908浏览 0评论
折腾:
【已解决】Ubuntu中crontab的脚本任务没有执行
后,慢慢真正明白cron的语法了。
所以去举例说明cron的参数的含义,计算出准确的命令运行的时间。
以之前写的一个cron的语法去举例和分析:
0 4 1 */2 *
对照语法:
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)
# |  |  |  |  |
# *  *  *  *  *   command to be executed
容易分析出:
  • 0 4:
    • 0:0分钟
    • 4:4分钟
    • -》具体时间是 04:00:00
  • 1:天,每月的1号
  • */2:
    • *表示所有月份都可以
      • */2表示:每2个月间隔
        • 所以共12个月份中,就是:2/4/6/8/12这几个月
  • *:*表示周几都可以
-》综合起来就是:
注意现在的时间是:2019-11-09 00:37:00
  • 先说年:没限制
  • 再说月份:只允许2、4、6、8、10、12
    • 所以往后最近的一次,则是12月
  • 再说天:1号,对应月份的1号
  • 再说小时:4点 04点 凌晨4点
  • 以及分钟:00分钟
  • 秒:默认是00
所以是:
2019-11-09 00:37:00
最近往后的一次,只能是:
2019年
的2、4、6、8、10、12中的12月
的1号
的凌晨4点
的0分钟
的0秒
合并起来是:
2019-12-01 04:00:00
后续的时间,就容易理解了
第二次就是:
2个月后的
2020-02-01 04:00:00
如此往后,即可推算出对应的时间,也就是:
https://tool.lu/crontab/
帮忙算出来的时间:
引申解释:
之前不小心,把:
0 4 1 */2 *
写成了:
0 4 1 */2 0
则实际上,含义则完全变化了:
前面的部分都一样:
  • 0 4:
    • 0:0分钟
    • 4:4分钟
    • -》具体时间是 04:00:00
  • 1:天,每月的1号
  • */2:
    • *表示所有月份都可以
      • */2表示:每2个月间隔
        • 所以共12个月份中,就是:2/4/6/8/12这几个月
只有最后的表示星期的,不是*,而是0,表示周日:
  • 0:0表示周日
    • -》注意是 只能是周日,周1到周六,都不行
    • 注:0或7都表示周日
则含义则变成:
2019-11-09 00:37:00
最近往后的一次,只能是:
  • 年:2019年
    • 以及之后的年份,比如2020,2021,2022等
    • 注意:之所以没说一定是2019年,因为要满足必须是星期日的条件
  • 月:的2、4、6、8、10、12中的某个月份
    • 注意:之所以没说是12月,因为要满足必须是星期日的条件
  • 日:(肯定,必须是)1号
  • 小时:凌晨4点
  • 分钟:0分钟
  • 秒:0秒
-》看到重点了吧
之后的一次,是某年某月(2、4、6、8、10、12中之一)的1号,必须是周日才行
去翻日历
万年日历查询 – 在线日历
很巧的是:
2019-12-01
就是周日
所以第一次的时间是:
2019-12-01 04:00:00
但是重点来了:
继续向后找,最近的日期,也是周日,同时还满足上面的条件的,则只有:
2021-08-01
所以,才看到
https://tool.lu/crontab/
帮我们计算出来的时间分布是:
1. 2019-12-01 04:00:00
2. 2021-08-01 04:00:00
3. 2023-10-01 04:00:00
4. 2024-12-01 04:00:00
对应日期,都(正好是,必须是)周日
由此可见:
上面的规则和条件,要全部满足你所写的内容
反之:要自己确保很清楚自己写的条件,才能计算出正确的命令运行的时间
如果不清楚,则最好去参考
https://tool.lu/crontab/
去帮你计算清楚。

转载请注明:在路上 » 【整理】如何读懂cron的值的真正含义即计算出命令执行的具体时间

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
80 queries in 0.200 seconds, using 22.15MB memory