用$(date)命令和redirect的Cron作业将不会运行

这是我试图每晚运行的cron工作:

0 20 * * * /data/code/scripts/foo.sh >/root/foo.$(date +%Y-%m-%d-%T).log 2>&1 

当我从命令行运行它,它工作正常。 但是Cron似乎还没有尝试运行它。

思考?

%符号需要在cron作业中转义。

在每个前面放一个反斜杠。

晚编辑:

我不知道我是如何错过了这一点,但你使用bash语法来创build一个子shell来运行你的date命令。由于cron不bash,这将无法正常工作。 它会工作,如果你改变你的cron工作到这个:

 0 20 * * * /data/code/scripts/foo.sh >/root/foo.`date +\%Y-\%m-\%d-\%T`.log 2>&1 

或者,您可以在脚本中执行输出redirect,或者(如果这不合适)编写一个调用上述脚本的包装器脚本,并执行输出redirect。

您可能还需要使用date命令的完整path。

它可能位于/bin/date ,你可以检查你的盒子在which date