【问题标题】:crontab settings with start_time and interval带有 start_time 和间隔的 crontab 设置
【发布时间】:2016-08-31 23:46:08
【问题描述】:

我有一个 linux cron 作业要运行。我想配置它的设置。我所拥有的是,start_time 用于工作,interval 之后每次都应该重复。 interval 是整数,以天为单位。例如,我想在未来某个随机日期开始设置 cron 作业,并希望在每 interval 天后定期运行该作业。我试图做0 0 * * */interval,但它没有给出我想要的。知道如何实现吗?

【问题讨论】:

    标签: cron crontab


    【解决方案1】:

    我想你可能想要类似的东西

    0 0 */interval * * /your/command
    

    基本上将星期几切换为月份中的某一天。至于随机开始日期,我认为必须在其他地方完成,比如在某个时间点编辑 cron 文件的 shell 脚本等。

    编辑: 这个小脚本将允许您编辑 cron 文件。

    #!/bin/sh
    crontab -l > tempcron
    echo "00 00 * * * /bin/ls" >> tempcron #just an example cron
    crontab tempcron
    rm tempcron
    

    【讨论】:

    • 我也试过这个解决方案,但它并不关心start_time。它从每个月的第一天开始设置工作。我对更改 cron 的开始时间更感兴趣。你能举个你提到的编辑 cron 文件的 shell 脚本的例子吗?
    • 是的,您不能使用 cron 本身编辑 cron 作业的开始时间,它仅用于根据参数设置从下一个实例开始的常规操作。就开始而言,我并不完全是您正在寻找的东西-您在寻找多远的未来?显然,让一个 shell 脚本循环运行几天直到它到达正确的时间并没有多大意义,但你可以做一些事情,比如有一个脚本来检查时间是否与存储的值匹配,如果匹配则编辑cron 文件。然后在 cron 中定期运行 THAT 直到时间过去
    • 我添加了一个编辑脚本,该脚本将为您编辑 cron 文件。很难说你想如何在不知道更多的情况下进行随机启动,但是如果你例如使用date 获取当前时间戳,检查它是否已经通过了某个预定义的值,然后它是否已经在我的编辑然后可以实现你想要的?您可以将该脚本设置为每小时运行一次或其他任何时间运行的 cron,然后让它从预制的 cron 文件中填充 cron,这将摆脱这个初始脚本(希望这是有道理的)
    • 实际上,在我的情况下,开始时间和间隔是用户输入的。所以它们都是随机变量。我已经明白,保持一切随机性不适用于 crontab。所以我正在考虑对interval 输入值应用限制。我将允许 interval 为 1、7 或 30 天。但即使在这种情况下,start_time 也可能是任何随机的未来日期,具体取决于用户输入。
    • 嗯,是的,这听起来像是一个棘手的 cron 用例。无论你拿出什么都会有点hacky。如果是我,我想我会考虑将用户输入(即开始时间和命令)存储在一个文件中,然后让一个 cron 作业运行一个脚本,该脚本循环遍历文件的每一行,检查日期是否已经到来,当它有它时,它会在我的答案中运行类似于 sn-p 的东西,以便在从用户文件中删除相关行之前将该命令添加到 cron 文件中(虽然这可能很棘手,但有办法做到这一点)。
    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    相关资源
    最近更新 更多