这是我试图每晚运行的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 。