Cron使用反引号时出错

时间:2010-08-09 22:14:01

标签: linux shell cron

以下在命令行

中工作正常
/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

我看到网络上的其他人通过转出百分号来解决同样的问题,但这没有帮助,我尝试了只在反引号内的日期,没有格式说明符,但仍然有错误。

我也看到日期的参数用单引号或双引号括起来,但这也无济于事。

当然,我可以把它扔进一个脚本并执行我想的 - 但那有什么乐趣?

有什么想法吗?我正在使用RHEL 5.

2 个答案:

答案 0 :(得分:17)

尝试使用$()而不是反引号。你可能需要逃避百分号,因为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),而不是在命令行上传递它。

答案 1 :(得分: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