cron作业出错,但在shell上工作正常
Posted
技术标签:
【中文标题】cron作业出错,但在shell上工作正常【英文标题】:Error on cron job, but working fine on shell 【发布时间】:2013-10-20 18:54:21 【问题描述】:我正在配置 Cron 以自动备份我的 sql。但是我认为 Cron 存在一些问题,并且运行不佳。
这是我正在运行的命令:
mysqldump --opt -Q -uhereisthename -p'hereisthepasswordwithstrangecharactersthatmustbeescaped' databasename | gzip > /home2/username/backups/backupnamefolder/backupdbwebsitename.`date +"%Y-%m-%d"`.gz
当我通过 SSH 运行它时,它可以正常工作并生成备份。 但是,如果我通过 Cron 运行它,我会收到以下错误:
/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
任何人都可以提出什么问题?
【问题讨论】:
【参考方案1】:Cron 将 % 视为特殊字符(意思是“新行”,因此在错误消息中引用了第 0 行和第 1 行)。你需要逃避它:
date "+\%Y-\%m-\%d"
顺便说一句,posix $( )
语法通常比反引号更好 - 它允许嵌套命令。
【讨论】:
嗨,我使用的 Shell 是 Bash,它在那里工作。我已经按照你说的做了。我 cron 命令现在是bash -c "mysqldump --opt -Q -uhereisthename -p'hereisthepasswordwithstrangecharactersthatmustbeescaped' databasename | gzip > /home2/username/backups/backupnamefolder/backupdbwebsitename.
date +"%Y-%m-%d".gz"
但我仍然得到完全相同的两行错误以 /bin/sh: -c: line
抱歉,我在发布后不久就意识到出了什么问题 - 请参阅我编辑的答案。
嗨,谢谢。这两个版本我都试过了。使用(date +"%Y-%m-%d")
和date +"\%Y-\%m-\%d"
给出相同的错误。 :(
也许是因为我在密码中间有 % 符号?
有效!我还必须 \ 转义密码中的 % 。我认为反引号会做到这一点。但他们没有。谢谢。以上是关于cron作业出错,但在shell上工作正常的主要内容,如果未能解决你的问题,请参考以下文章
无法添加Cookie,已发送标头。 cron作业出错,但在浏览器中加载时无效