可变日期在 linux cron 中不起作用

Variable date not working in linux cron

我遇到一个问题,在进行广泛的 google 搜索时找不到任何信息。

我有一个 linux cron,通过 crontab 运行ning,在我尝试将可变日期添加到文件标题之前,它工作得很好。但是.. 当我 运行 在 cron 外部使用相同的命令时,仅从命令行,它工作正常.. 此外,如果我取出日期部分,cron 确实工作。

有效的命令行代码:

sudo mysqldump -h mysql.url.com  -u user -pPassword intravet sites | gzip > /mnt/disk2/database_`date '+%m-%d-%Y'`.sql.gz

有效的 Cron:

15 2 * * * root mysqldump -h mysql.url.com -u user -pPassword intravet sites | gzip > /mnt/disk2/database.sql.gz

无法运行的 Cron:

15 2 * * * root mysqldump -h mysql.url.com -u user -pPassword intravet sites | gzip > /mnt/disk2/database_`date '+%m-%d-%Y'`.sql.gz

我不明白为什么我不能在 cron 中使用日期功能? 我发现的一切都说我可以,但实际上我做不到。

服务器详细信息: Ubuntu 12.04.5

感谢您的任何见解。

尝试用 $() 替换反引号并转义您的 %,例如:

15 2 * * * root mysqldump -h mysql.url.com -u user -pPassword intravet sites | gzip > /mnt/disk2/database_$(date '+\%m-\%d-\%Y').sql.gz

我只提到删除反引号,因为您在以后的编码工作中最终会遇到各种转义问题。坚持使用 $() 进行命令替换。

你只需要使用转义 % 符号

* * * * * touch /tmp/foo_`date '+\%m-\%d-\%Y'`.txt

结果:

[root@linux tmp]# ls -l /tmp/foo_*
-rw-r--r-- 1 root root 0 Apr 18 02:17 /tmp/foo_04-18-2015.txt