如何设置当前日期+ 14天的cron表达式

时间:2018-09-06 09:07:04

标签: linux cron bamboo

我正在寻找一个cron表达式,它将有助于设置当前日期+ 14天的cron作业。每当将新代码部署到开发人员环境中,然后使用开发人员的当前日期(用于安排14天后为prod计划触发器)时,就会进行一次重复的练习。

示例:这是一个BAMBOO CLI命令,用于在Bamboo计划中设置计划的触发器。 --action addEnvironmentTrigger --deploymentProject“ Deploy ZDEPLOY4774565-BASE”-环境“ QA”-类型“ Scheduled”-描述“ scheduled trigger” --schedule“ 1 0 0?* *”

现在,一旦开发人员部署成功完成,则它将为14天后部署的产品创建计划的触发器。因此,每次部署dev时。我需要使用dev的当前日期。

2 个答案:

答案 0 :(得分:0)

以下cron表达式将运行14天

0 5 */14 * * /your/command/

如果您只想从当前日期(2018年9月20日)开始运行一次

0 0 20 9 ? 2018  /command

警告:cron的标准/默认实现不支持Year列。

答案 1 :(得分:0)

从第X天开始每14天进行一次cron作业

如果要执行此操作,请查看this answer

仅在第X天后14天进行一次cron作业

如果要执行此操作,则有一些选择。假设第X天是今天(2018-09-06),那么我给您提供以下选择:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)
# |  |  |  |  |
# *  *  *  *  *   command to be executed
  0  0  6  9  *   [[ `date '+\%Y'` == "2018" ]] && sleep 1209600 && command1
  0  0  20 9  *   [[ `date '+\%Y'` == "2018" ]] && command2
  0  0  *  *  *   /path/to/daytestcmd 14 && command3
  • 这里的第一个选择就是简单地检查年份是否正确。如果是这样,请睡眠14天,然后执行command1
  • 第二个选项是通过计算日期本身并在当天执行脚本。同样,您必须手动检查正确的年份。

第三个选项更加灵活。这个想法是创建一个名为daytestcmd的脚本来为您执行检查。该脚本的优点是您只需要更新脚本中的一行即可更改测试,而无需更改cronjob。该脚本类似于:

#/usr/bin/env bash
# Give reference day
reference_day="20180906"
# Give the number of days to await execution (defaults to zero)
delta_days="${1:-0}"
# compute execution day
execution_day=$(date -d "${reference_day} + $delta_days days" "+%F")

[[ $(date "+%F") == "$execution_day" ]]

因此,下次要等待14天时,只需更新脚本并更改变量reference_day

注释: OP更新了问题。上面的脚本也可以进行调整,其中可以通过一组命令获取reference_day,例如检索 dev部署的日期。假设get_dev_deployment_day是返回当天的命令,那么您只需要更新

reference_day=$(get_dev_deployment_day)