我正在尝试将cronjob输出到指定(文件夹)位置的日期文件中。
我的crontab条目如下所示:
* * * * * /some/path/test.sh >> $(date "+/home/oompah/logs/%Y%m%d.test.log")
我不明白的是,当我在控制台输入此命令时,我得到正确的字符串:
echo $(date "+/home/oompah/logs/%Y%m%d.test.log")
/home/oompah/logs/20110329.test.log
导致此错误的原因是什么?如何解决?
bash版本信息是:
GNU bash,版本4.1.5(1)-release(x86_64-pc-linux-gnu)
答案 0 :(得分:91)
你应该逃避你的crontab中的百分号:
* * * * * /some/path/test.sh >> $(date "+/home/oompah/logs/\%Y\%m\%d.test.log")
百分比(%
)符号在crontabs中具有特殊含义。它们被解释为换行符。
答案 1 :(得分:3)
将date命令放在脚本中。 cron
未必运行您认为的shell。
答案 2 :(得分:0)
确保将shebang #!/bin/bash
作为脚本的第一行。另外,如bmargulies
所述,如果可能,请将date
命令放在脚本中。