我正在使用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写日期吗?
答案 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
。