带有 $(date) 命令和重定向的 Cron 作业不会运行

带有 $(date) 命令和重定向的 Cron 作业不会运行

这是我尝试每晚运行的 cron 作业:

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

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

有什么想法吗?

答案1

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

在每个前面都加上一个反斜杠。

后期编辑:

我不确定我之前怎么会错过这个,但你正在使用 bash 语法来创建子 shell 来运行你的date命令。由于 cron 不是 bash,所以这行不通。如果你将 cron 作业更改为以下内容,它将起作用:

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

或者,您可以在脚本内部执行输出重定向,或者(如果不合适)编写一个调用上述脚本并执行输出重定向的包装脚本。

答案2

您可能还需要使用该date命令的完整路径。

它可能位于/bin/date,您可以使用 检查它在您的盒子上的位置which date

相关内容