Cron ошибка с использованием обратных кавычек - PullRequest
9 голосов
/ 10 августа 2010

Следующее отлично работает из командной строки

/usr/bin/mysqldump -uUser -pPass Db_name > /var/www/db_backup/db.`date +%Y%m%d%H%M`.sql 

но когда я пытаюсь сделать это в cron, я получаю ошибку:

bad ` sign 
errors in crontab file, can't install

Я видел, как кто-то еще в сети решал ту же проблему, избегая знаков процента, но это не помогло, и я попробовал это, используя только дату внутри обратных кавычек без спецификаторов формата, и все еще получил ошибки.

Я также видел аргумент даты, заключенный в одинарные или двойные кавычки, но это тоже не помогает.

Конечно, я мог бы просто выбросить его в скрипт и выполнить, как я полагаю, - но что это за удовольствие?

Есть идеи? Я использую RHEL 5.

Ответы [ 2 ]

18 голосов
/ 10 августа 2010

Попробуйте это с $() вместо кавычек. И вам, вероятно, нужно избегать знаков процента, поскольку cron в противном случае преобразует их в символы новой строки.

* 0 * * * /usr/bin/mysqldump -uUser -pPass Db_name > /var/www/db_backup/db.$(date +\%Y\%m\%d\%H\%M).sql

Кроме того, следует хранить пароль в файле параметров с безопасными разрешениями (например, 600 или 640) вместо передачи его в командной строке.

4 голосов
/ 10 августа 2010

Поместите ваш однострочный скрипт (как показано) в правильный файл скрипта и вызовите его из cron:

$ cat /usr/local/bin/db-backup
#!/bin/sh
/usr/bin/mysqldump -uUser -pPass Db_name > \
   /var/www/db_backup/db.`date +%Y%m%d%H%M`.sql 
$ # use RHEL commands to add db-backup to your crontab
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...