在cron作业上出错,但在shell上工作正常

Pik*_*ikk 5 shell cron mysqldump cpanel

我正在配置Cron自动备份我的sql.但是我认为Cron有一些问题并且效果不佳.

这是我正在运行的命令:

mysqldump --opt -Q -uhereisthename -p'hereisthepasswordwithstrangecharactersthatmustbeescaped' databasename | gzip > /home2/username/backups/backupnamefolder/backupdbwebsitename.`date +"%Y-%m-%d"`.gz
Run Code Online (Sandbox Code Playgroud)

当我通过SSH运行它时它工作正常并生成备份.但是,如果我通过Cron运行它,我会收到以下错误:

/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议什么是错的?

joe*_*ews 5

Cron将%视为特殊字符(意思是“换行”,因此在错误消息中引用了行0和1)。您需要对其进行转义:

date "+\%Y-\%m-\%d"
Run Code Online (Sandbox Code Playgroud)

顺便说一句,posix $( )语法通常比反引号更好-它允许嵌套命令。