配置作业过期

配置作业过期

我目前正在学习 Linux,并且正在使用 cron 和 crontab 进行一些调度作业的练习,但我想知道是否可以限制调度作业的运行次数。从手册页中,我可以看到如何安排作业定期执行,但我还没有找到一种方法来给出具体的执行次数,或者应该停止运行作业的日期。是否有可能做到这一点?

答案1

示例:每小时运行一次的作业,直到“Mon Feb 4 08:30:00 UTC 2019”(Unix 时间戳 1549269000)看起来像

@hourly [ "$( date +\%s )" -lt 1549269000 ] && /path/to/my-script.sh

这项工作从技术上讲仍然是跑步,但它不会执行脚本在给定的时间戳之后。

同样,每小时仅运行五次的作业:

@hourly ( f="$HOME/job.count";c=0;[ -f "$f" ] && read c <"$f"; echo "$(( c + 1 ))" >"$f"; [ "$c" -lt 5 ] ) && /path/to/my-script.sh

上述作业,美化后:

(
    f="$HOME/job.count"
    c=0
    [ -f "$f" ] && read c <"$f"
    echo "$(( c + 1 ))" >"$f"
    [ "$c" -lt 5 ]
) && /path/to/my-script.sh

这使用状态文件$HOME/job.state来存储作业已执行的次数。如果文件存在,则将其中的数字读入c,然后立即写回同一文件,并递增。如果数量小于 5,则执行脚本。

再说一次,这项工作将跑步每小时,无论状态文件的内容如何,​​但是脚本仅当状态文件中的值小于 5 时才会运行。

相关内容