为什么百分号(%)在crontab中不起作用?

时间:2013-04-26 14:04:16

标签: linux bash date cron crontab

我正在使用cron将文件写入由bash脚本运行的日志中。对cron的调用看起来像这样:

*/25 * * * * bash script.sh > "/var/log/$(date +%Y-%m-%d_%H:%M).log"

但是当我检查crontab时,它记录为

*/25 * * * * bash script.sh > "/var/log/$(date +).log"

它永远不会写日志文件。有什么我需要改变才能让cron写日期吗?

1 个答案:

答案 0 :(得分:4)

这是一个逃避变量的问题:

* * * * * /usr/bin/touch /tmp/$(date +\%Y:\%m).log
#                                      ^   ^

对我有用。

来自man 5 crontab

  

除非使用反斜杠(\)进行转义,否则命令中的百分号(%)将更改为换行符,并且第一个%之后的所有数据将作为标准输入发送到命令。

所以

*/25 * * * * /bin/bash script.sh > "/var/log/$(date +\%Y-\%m-\%d_\%H:\%M).log"
#                                                    ^    ^   ^   ^   ^

应该有用。

注意我使用/bin/bash而非bash