备份数据库使用带日期功能的crontab

时间:2011-08-27 02:21:15

标签: linux ubuntu crontab

我可以使用此命令

mysqldump -u"root"  myDB| gzip > mydb_`date +%d-%m-%Y`.sql.gz

但在crontab中运行时

* * * * * mysqldump -u"root"  myDB| gzip > mydb_`date +%d-%m-%Y`.sql.gz

(此错误由函数日期引起,当我删除它时,crontab运行良好)

在ubuntu上,它在日志文件中发生此错误。

ubuntu CRON[xxxx] (user) CMD(mysqldump -u"root"  myDB| gzip > mydb_`date+)
ubuntu CRON[xxxx] (CRON) error ( grandchild #5353 failed with exit status 2)
ubuntu CRON[xxxx] (CRON) info (no MTA installed, discarding output)

2 个答案:

答案 0 :(得分:13)

crontab命令中的

%符号将转换为换行符,并将第一个%之后的所有数据发送到命令的stdin。将每个%替换为\%

(你只有4个时间段:* * * *;你需要5个(你后来修复了这个问题)。)

答案 1 :(得分:0)

来自man 5 crontab

  

“第六”字段(行的其余部分)指定命令   运行

     

该行的整个命令部分,直到换行符或%   字符,将由/ bin / sh或指定的shell执行   在crontab文件的SHELL变量中。

     

百分号(%)   命令,除非使用反斜杠()进行转义,否则将更改为   换行符,第一个%后的所有数据都将被发送到   命令作为标准输入。无法拆分单个命令   在多行上划线,就像shell的尾随“\”。