我自己无法找到这个问题的答案。
由于 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