Ошибка Cron с использованием backquotes

В командной строке

/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

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

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

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

Любые идеи? Я использую RHEL 5.

2 ответа

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

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

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


Поместите одну строку script (как показано) в правильный файл script и вызовите это из 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

licensed under cc by-sa 3.0 with attribution.