Ошибка крона с использованием одинарных левых кавычек

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

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

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

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

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

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

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

Какие-либо идеи? Я использую RHEL 5.

9
задан sth 9 August 2010 в 22:18
поделиться

2 ответа

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

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

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

18
ответ дан 4 December 2019 в 09:34
поделиться

Поместите однострочный сценарий (как показано) в соответствующий файл сценария и вызовите его из 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
4
ответ дан 4 December 2019 в 09:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: