我遇到了一个问题,在进行广泛的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
感谢您的任何见解。
答案 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
我只提到删除反引号,因为您最终会在编码工作中遇到各种类型的转义问题。坚持使用$()
进行命令替换。