如何在RHEL 7.2上运行本月最后一天的cron

问题描述 投票:0回答:1

我如何在RHEL 7.2中的最后一天运行cronjob。试过以下方法。但没有奏效。截至目前为止,我的脚本只需触摸一个位置的文件即可。当我在cronjob中使用日期功能时,它无法正常工作。但是使用正常的crontab参数,它正在工作。

52 23 28-31 * * ['$(/usr/bin/date +%d -d tomorrow)' == '01' ] && sh /apps/scripts/test.sh
52 23 * * * [ $(date +\%d) -eq $(echo $(cal) | awk '{print $NF}')] && /apps/scripts/test.sh
45 23 * * * [[ $(date +'%d') -eq $(cal | awk '!/^$/{ print $NF }' | tail -1) ]] && /apps/scripts/test.sh >/dev/null 2>&1
cron rhel7
1个回答
0
投票

你的逻辑是正确的。但是,有一些语法问题。

  1. Cron有一个很好的功能,%标记命令的结束和相应命令的/ dev / stdin的开头。所以你必须逃脱它。
  2. 您的测试命令需要括号之前和之后的空格。
  3. 单引号不会执行命令替换

这归结为:

52 23 * * * [ "$(date +\%d -d tomorrow)" = "01" ] && /apps/scripts/test.sh

“第六”字段(行的其余部分)指定要运行的命令。该行的整个命令部分,直到换行符或“%”字符,将由/ bin / sh或由cronfile的SHELL变量中指定的shell执行。除非使用反斜杠(\)进行转义,否则命令中的“%”字符将更改为换行符,并且第一个%之后的所有数据将作为标准输入发送到命令。

来源:man 5 crontab

© www.soinside.com 2019 - 2024. All rights reserved.