我可以使用此命令
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)
答案 0 :(得分:13)
%
符号将转换为换行符,并将第一个%
之后的所有数据发送到命令的stdin。将每个%
替换为\%
。
(你只有4个时间段:* * * *
;你需要5个(你后来修复了这个问题)。)
答案 1 :(得分:0)
来自man 5 crontab
:
“第六”字段(行的其余部分)指定命令 运行
该行的整个命令部分,直到换行符或% 字符,将由/ bin / sh或指定的shell执行 在crontab文件的SHELL变量中。
百分号(%) 命令,除非使用反斜杠()进行转义,否则将更改为 换行符,第一个%后的所有数据都将被发送到 命令作为标准输入。无法拆分单个命令 在多行上划线,就像shell的尾随“\”。