我正在寻找一个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的当前日期。
答案 0 :(得分:0)
以下cron表达式将运行14天
0 5 */14 * * /your/command/
如果您只想从当前日期(2018年9月20日)开始运行一次
0 0 20 9 ? 2018 /command
警告:cron的标准/默认实现不支持Year列。
答案 1 :(得分:0)
如果要执行此操作,请查看this answer。
如果要执行此操作,则有一些选择。假设第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
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)