【发布时间】:2021-09-21 14:22:13
【问题描述】:
如果是工作日,我想将 cron 配置为在每个月的第一天运行脚本。如果该月从周末开始,我希望脚本在接下来的第一个工作日运行。 我试过这样做
0 9 1-3 * * dom=$(date +\%d); dow=$(date +\%u); [[ $dow -lt 6 && (( $dom -eq 1 || $dow -eq 1 )) ]] && script.sh
这在 bash 中有效,但似乎 cron 无法执行比较。
【问题讨论】:
-
我找到了设置像 0 9 1W * * 这样的调度程序的方法,但我真的不想用系统时间来测试它,想知道是否可以让 cron 工作比较
-
为什么也不将条件传递给 if 内的脚本
-
是的,总的来说这将是一个解决方案,但我现在想知道这种类型的 cron 设置是否可行
-
在 crontab 文件的开头附近放置一行 SHELL=/bin/bash。
-
但是,我会将您现在正在做的事情放在它自己的 bash 脚本中,使其可执行,然后简单地从 crontab 文件中调用该脚本;更干净,而且还把调试从 crontab 文件中取出到一个常规脚本中。