在占位符中存储crontab子表达式

在占位符中存储crontab子表达式,cron,Cron,我们知道cron表(或crontab)中的项具有以下格式 # ┌───────────── minute (0 - 59) # │ ┌───────────── hour (0 - 23) # │ │ ┌───────────── day of the month (1 - 31) # │ │ │ ┌───────────── month (1 - 12) # │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday)

我们知道cron表(或crontab)中的项具有以下格式

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday)
# * * * * * <command to execute>
或者像这样:

var wakeup=7
const wakeup=7
#define wakeup 7
或者使用类似于宏的命令,如下所示:

var wakeup=7
const wakeup=7
#define wakeup 7
这样我就可以写crontab行,如下所示:

 0 wakeup * * * wakeupscript.sh
...
...
*/5 0-wakeup * * * prewakeupchecks.sh
因此,当我希望这些脚本分别在8和8之前运行,而不是在7和7之前运行时,我只需要重新定义
唤醒
占位符,而不是手动更改所有行


理想情况下,占位符还应存储间隔和频率值,如
15-30
*/20
等。

据我所知,对于常见的cron实现,简单的答案是“否”

crontab文件格式非常简单,在解释它时不展开任何变量或宏。在某些实现中,可以设置环境变量以影响cron本身的行为,也可以在执行命令时将其传递给命令,但这些变量不会影响文件其他行的解释

您可以改为构建自己的宏/模板系统:

  • 以自定义格式存储规则
  • 编写一个脚本,将它们预处理为标准crontab格式,并将其输出到临时文件
  • 使用
    crontab$tempfile
预处理器甚至可以是一些通用的东西,比如M4、Perl、PHP,甚至handlebar.js。您所要做的就是记住不要手动编辑crontab,这样它就会与模板不同步