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

时间:2015-04-17 15:08:07

标签: linux cron

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

我有一个linux cron,通过crontab运行,在我尝试将可变日期添加到文件标题之前一直运行良好。但是..当我在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

感谢您的任何见解。

2 个答案:

答案 0 :(得分:3)

您只需要使用转义%符号

* * * * * 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

答案 1 :(得分:1)

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

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

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