V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
locktionc
V2EX  ›  问与答

如何根据 Crontab 的 Log 用代码反向推导出每一个命令的定时规则

  •  
  •   locktionc · 2018-04-12 11:53:48 +08:00 · 867 次点击
    这是一个创建于 2215 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这个问题的实际运用场景是根据 crontab 的 Log 恢复 Crontab。

    现在把需求简化一下:

    有一个程序,每一个小时会在 Log 里面打印hit这个单词,于是 Log 会变成这样:

    2018-04-12 10:00:00 hit
    2018-04-12 11:00:00 hit
    2018-04-12 12:00:00 hit
    2018-04-12 13:00:00 hit
    2018-04-12 14:00:00 hit
    

    如果一开始不知道这个时间规则,但是通过分析 Log 里面每一条的时间差,就可以知道程序是每小时打印一次。

    现在增加了一个需求,在 12 点的时候,每 15 分钟打印一次hit。于是 Log 就变成了:

    2018-04-12 10:00:00 hit
    2018-04-12 11:00:00 hit
    2018-04-12 12:00:00 hit
    2018-04-12 12:15:00 hit
    2018-04-12 12:30:00 hit
    2018-04-12 12:45:00 hit
    2018-04-12 13:00:00 hit
    2018-04-12 14:00:00 hit
    

    现在依然不知道这个程序的代码的情况下,如果人眼来看这个 Log,就可以反推出这个 Log 是符合两套时间规则的。一套是每小时打印一次,第二套是在 12 点的时候每 15 分钟打印一次。

    现在给你一个 Log,如何用代码来反推出生成这个 Log 有这些时间规则? Log 里面最少有 1 个规则,最多有 10 个规则,而且每个规则打印的内容都不少于 3 行。

    2 条回复    2018-04-12 12:11:35 +08:00
    locktionc
        1
    locktionc  
    OP
       2018-04-12 11:58:34 +08:00
    我自己想到的办法是先用代码找出很显然的规则。然后把符合这个规则的内容先删掉,然后再接着找。不知道大家有没有其他更好的办法?
    bfdh
        2
    bfdh  
       2018-04-12 12:11:35 +08:00
    小明 8 点出门去上班,9 点到公司,请问小明是以什么交通方式到公司的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2469 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:03 · PVG 18:03 · LAX 03:03 · JFK 06:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.