在占位符中存储 crontab 子表达式
Storing crontab sub-expressions in a placeholder
我们知道 cron table(或 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>
有时,我需要通过更改某些子表达式中的值来进行快速更改,例如在 several[=39 中的“小时”子表达式中将 7 改为 8 =]行。
有没有办法将此值存储在占位符中,这样我就不必手动修改 cron table 中的许多行?
例子
例如,我想在这样的占位符中存储一个值:
var wakeup=7
或者像这样:
const wakeup=7
或者使用一些类似宏的命令,像这样:
#define wakeup 7
这样我就可以编写如下所示的 crontab 行:
0 wakeup * * * wakeupscript.sh
...
...
*/5 0-wakeup * * * prewakeupchecks.sh
这样当我希望这些脚本分别在 8 点和 8 点之前 运行,而不是在 7 点和 7 点之前,我只需要重新定义 wakeup
占位符而不是手动更改所有行。
理想情况下,占位符还应存储间隔和频率值,如 15-30
或 */20
等
据我所知,对于常见的 cron 实现,简单的答案是“否”。
crontab文件格式非常简单,解释时没有展开任何变量和宏。在某些实现中,可以设置环境变量来影响 cron 本身的行为,并在执行时传递给命令,但这些不会影响文件其他行的解释。
您可以改为构建自己的宏/模板系统:
- 以自定义格式存储规则
- 写一个脚本将它们预处理成标准的crontab格式并输出到一个临时文件
- 使用
crontab $tempfile
将其安装为 crontab
预处理器甚至可以是通用的,例如 M4、Perl、PHP,甚至 handlebars.js。您所要做的就是记住不要手动编辑 crontab,这样它就会与您的模板不同步。
我们知道 cron table(或 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>
有时,我需要通过更改某些子表达式中的值来进行快速更改,例如在 several[=39 中的“小时”子表达式中将 7 改为 8 =]行。
有没有办法将此值存储在占位符中,这样我就不必手动修改 cron table 中的许多行?
例子
例如,我想在这样的占位符中存储一个值:
var wakeup=7
或者像这样:
const wakeup=7
或者使用一些类似宏的命令,像这样:
#define wakeup 7
这样我就可以编写如下所示的 crontab 行:
0 wakeup * * * wakeupscript.sh
...
...
*/5 0-wakeup * * * prewakeupchecks.sh
这样当我希望这些脚本分别在 8 点和 8 点之前 运行,而不是在 7 点和 7 点之前,我只需要重新定义 wakeup
占位符而不是手动更改所有行。
理想情况下,占位符还应存储间隔和频率值,如 15-30
或 */20
等
据我所知,对于常见的 cron 实现,简单的答案是“否”。
crontab文件格式非常简单,解释时没有展开任何变量和宏。在某些实现中,可以设置环境变量来影响 cron 本身的行为,并在执行时传递给命令,但这些不会影响文件其他行的解释。
您可以改为构建自己的宏/模板系统:
- 以自定义格式存储规则
- 写一个脚本将它们预处理成标准的crontab格式并输出到一个临时文件
- 使用
crontab $tempfile
将其安装为 crontab
预处理器甚至可以是通用的,例如 M4、Perl、PHP,甚至 handlebars.js。您所要做的就是记住不要手动编辑 crontab,这样它就会与您的模板不同步。