2013-10-12 3 views
5

Я настраиваю Cron для резервного копирования моего sql автоматически. Однако я думаю, что у Cron есть некоторые проблемы, и это плохо работает.Ошибка при работе 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 

Любой может предложить то, что не так?

ответ

4

Cron рассматривает% как специальный символ (что означает «новая строка», следовательно, ссылки на строки 0 и 1 в сообщении об ошибке). Вы должны избежать этого:

date "+\%Y-\%m-\%d" 

Кстати, синтаксис POSIX $(), как правило, лучше, чем обратные кавычки - это позволяет вложенные команды.

+0

Привет, Оболочка, которую я использовал, это Bash, и она работает там. Я сделал, как вы сказали. I 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' – Pikk

+0

Извините, я понял, что было не так сразу после публикации - см. мой отредактированный ответ. – joews

+0

Привет, спасибо. Я пробовал обе версии. С '(date +"% Y-% m-% d ")' и с '' date + "\% Y - \% m - \% d" '' дают ту же ошибку. :( – Pikk

Смежные вопросы