locktionc
V2EX  ›  问与答

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

  •  
  •   locktionc · Apr 12, 2018 · 1243 views
    This topic created in 2957 days ago, the information mentioned may be changed or developed.

    这个问题的实际运用场景是根据 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 replies    2018-04-12 12:11:35 +08:00
    locktionc
        1
    locktionc  
    OP
       Apr 12, 2018
    我自己想到的办法是先用代码找出很显然的规则。然后把符合这个规则的内容先删掉,然后再接着找。不知道大家有没有其他更好的办法?
    bfdh
        2
    bfdh  
       Apr 12, 2018
    小明 8 点出门去上班,9 点到公司,请问小明是以什么交通方式到公司的?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5922 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:36 · PVG 11:36 · LAX 20:36 · JFK 23:36
    ♥ Do have faith in what you're doing.