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