在cron作业中使用$(日期“+%Y-%m-%d_%H:%M:%S”)有什么问题?

时间:2013-07-11 20:54:45

标签: bash cron backup cron-task

我试图通过cpanel cron jobs面板汇总一个MySQL备份脚本,但是我收到了我不理解的错误。 我在我的Ubuntu上试过了这个命令

mysqldump -u(USERNAME) -p(PASSWORD) --all-databases | gzip > /home/MYHOMEDIR/myDBBckups/full_backup$(date "+%Y-%m-%d_%H:%M:%S").sql.gz

我面临的错误是:

---------- Email message ----------

From: Cron Daemon <root@MYSERVER>

Date: Thu, Jul 11, 2013 at 9:37 PM

Subject: Cron <MYUSERNAME@MYSERVER> mysqldump -u(USERNAME) -p(PASSWORD) --all-databases | 
gzip > /home/MYHOMEDIR/myDBBckups/full_backup$(date "+

To: MYEMAIL@gmail.com


/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'

/bin/sh: -c: line 1: syntax error: unexpected end of file 

---------- End of Email message ----------

当我删除date命令时,一切正常,但我不想每次都覆盖我的备份。

在同事的帮助下,我修理了这样:

mysqldump -u(USERNAME) -p(PASSWORD) --all-databases | gzip > /home/MYHOMEDIR/myDBBckups/full_backup$(date "+\%Y-\%m-\%d_\%H:\%M:\%S").sql.gz
非常感谢。

2 个答案:

答案 0 :(得分:3)

cron作业的命令部分中的%字符将转换为换行符。使用\%表示%字符,或将date命令放入您从cron调用的外部脚本中。

答案 1 :(得分:1)

Cron interprets the % character.

将该行放在文件create_backup.sh中,然后将命令bash /path/to/create_backup.sh放入crontab中。