在 cron 作业中使用 $(date "+%Y-%m-%d_%H:%M:%S") 有什么问题吗?

Moh*_*sen 4 bash backup cron 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
Run Code Online (Sandbox Code Playgroud)

我面临的错误是:

---------- 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 ----------
Run Code Online (Sandbox Code Playgroud)

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

在同事的帮助下,我解决了这个问题:

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

非常感谢。

Kei*_*son 7

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