【问题标题】:What is wrong with using $(date "+%Y-%m-%d_%H:%M:%S") in a cron job?在 cron 作业中使用 $(date "+%Y-%m-%d_%H:%M:%S") 有什么问题?
【发布时间】:2013-07-10 07:29:25
【问题描述】:

我正在尝试通过 cpanel cron 作业面板汇总 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

非常感谢。

【问题讨论】:

  • 标题中的双引号 (") 是正确的,但至少在我的浏览器中(和开始和结束引号在用于 cmets 的字体中看起来相同)。

标签: bash cron backup cron-task


【解决方案1】:

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

【讨论】:

  • 非常感谢,我修好了。
【解决方案2】:

Cron interprets the % character.

将该行放入文件create_backup.sh 并将命令bash /path/to/create_backup.sh 放入您的crontab 中。

【讨论】:

  • 链接网页中提到的特殊字符中,只有%是相关的;其他的在命令中没有特殊处理。
  • 非常感谢,我修好了。
猜你喜欢
  • 2016-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多