【问题标题】:Comparison operations in croncron 中的比较操作
【发布时间】: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 文件中取出到一个常规脚本中。

标签: linux cron cron-task


【解决方案1】:

根据Roadowl的建议,添加

SHELL=/bin/bash

在 cron 文件的开头使事情正常进行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多