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

Mar*_*hip 5 cron

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

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

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

想法?

Lad*_*ada 8

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

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

后期编辑:

我不确定我之前是如何错过的,但是您使用 bash 语法来创建子shell 来运行您的date命令。由于 cron 不是 bash,因此这将不起作用。如果您将 cron 作业更改为以下内容,它将起作用:

0   20  *   *   *   /data/code/scripts/foo.sh >/root/foo.`date +\%Y-\%m-\%d-\%T`.log 2>&1
Run Code Online (Sandbox Code Playgroud)

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