crontab /bin/sh 语法

crontab /bin/sh 语法

我自己无法找到这个问题的答案。

由于 cron 使用 /bin/sh,我收到语法错误。我有一个 cron 作业,它使用以下命令

2,17,32,47 * * * * tar -czvf /opt/SOMEFILES /var/lib/$(date +"%Y/%m/%d")

或者

2,17,32,47 * * * * tar -czvf /opt/$(date +"%Y/%m/%d")/somefiles /var/lib/$(date +"%Y/%m/%d")

基本上,这只是一个例子,真正的 cron 作业有点不同。试图给出某种类型的例子。

$(date +"%Y/%m/%d")这是我不知道如何在 Cron 中使用的部分。

我如何在 cron 中使用它? curdate 甚至可以是它所在的文件夹。

答案1

我没有您收到的确切错误,但我的猜测是这是一个转义字符问题(您使用正斜杠而不是反斜杠来表示日期)

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

尝试更多类似这种格式

`date +\%Y\%m\%d\`

答案2

解决方案一:将反斜杠\date

2,17,32,47 * * * * tar -czvf /opt/SOMEFILES >> /var/lib/`date +\%Y\%m\%d\`

解决方案2:

您还可以将命令放入 shell 文件中,然后使用 cron 执行 shell 文件。

工作岗位

tar -czvf /opt/SOMEFILES >> /var/lib/`日期 +\%Y\%m\%d\`

计划任务

2,17,32,47 * * * * jobs.sh

相关内容