2010-08-09 82 views
6

下工作的命令行精细克朗错误使用反引号

/usr/bin/mysqldump -uUser -pPass Db_name > /var/www/db_backup/db.`date +%Y%m%d%H%M`.sql 

但是当我尝试这样做,在cron,我得到的错误:

bad ` sign 
errors in crontab file, can't install 

我看到别人在net通过转义百分号来解决同样的问题,但是这并没有帮助,我在没有格式说明符的backquotes里面用日期试了一下,仍然有错误。

我也看到过用单引号或双引号括起来的日期参数,但这也没有帮助。

当然,我可以把它放入一个脚本并执行,我想 - 但是有什么乐趣呢?

任何想法?我使用RHEL 5

+0

阅读'man crontab'来看看如何处理百分比符号。 – 2010-08-10 15:58:26

回答

14

$()而不是反引号试试吧。而你可能确实需要逃避百分号,因为cron否则将它们转换为换行符。

* 0 * * * /usr/bin/mysqldump -uUser -pPass Db_name > /var/www/db_backup/db.$(date +\%Y\%m\%d\%H\%M).sql 

此外,你应该store the password in an option file与安全的权限(如600或640),而不是通过它的命令行上。

+0

谢谢!这正是我正在寻找的。并感谢关于选项文件的提示。 – amac44 2010-08-11 15:57:51

4

把你的一个行脚本(如图所示)到合适的脚本文件并调用该从cron:

$ cat /usr/local/bin/db-backup 
#!/bin/sh 
/usr/bin/mysqldump -uUser -pPass Db_name > \ 
    /var/www/db_backup/db.`date +%Y%m%d%H%M`.sql 
$ # use RHEL commands to add db-backup to your crontab