2

У меня есть команда в моем crontab, которая не выполняется правильно, это должно делать резервную копию базы данных каждый день в указанное время. Я попытался запустить команду в моем терминале и работает правильно.

Для редактирования моего crontab я использую crontab -e текущая вкладка cron содержит следующее:

# Save online agent status every 2 minutes
*/2 * * * * /usr/bin/python /home/dummy/scm/qt-savu/userstatus.py >> /home/dummy/qt-savu/userstatus.log

# Save Hourly call counts every XX:59
59 * * * * /usr/bin/python /home/dummy/scm/qt-savu/hourlylog.py >> /home/dummy/qt-savu/hourlycc.log

# Backup albatross everyday
58 5 * * * /usr/bin/mysqldump -udummy -ppassword albatross | /bin/gzip > /home/dummy/Documents/backups/`/bin/date +%y.%m%d`.albatross.tar.gz

# Backup bert everyday
58 5 * * * /usr/bin/mysqldump -udummy -ppassword bert | /bin/gzip > /home/dummy/Documents/backups/`/bin/date +%y.%m%d`.bert.tar.gz

Другие команды в crontab работают правильно. Команды, которые не работают:

# Backup albatross everyday
58 5 * * * /usr/bin/mysqldump -udummy -ppassword albatross | /bin/gzip > /home/dummy/Documents/backups/`/bin/date +%y.%m%d`.albatross.tar.gz

# Backup bert everyday
58 5 * * * /usr/bin/mysqldump -udummy -ppassword bert | /bin/gzip > /home/dummy/Documents/backups/`/bin/date +%y.%m%d`.bert.tar.gz

Вывод журнала выглядит следующим образом

Sep  4 05:56:01 luna CRON[18815]: (dummy) CMD (/usr/bin/mysqldump -udummy -ppassword bert | /bin/gzip > /home/dummy/Documents/backups/`/bin/date '+)
Sep  4 05:56:01 luna CRON[18812]: (CRON) info (No MTA installed, discarding output)
Sep  4 05:56:01 luna CRON[18817]: (dummy) CMD (/usr/bin/mysqldump -udummy -ppassword albatross | /bin/gzip > /home/dummy/Documents/backups/`/bin/date '+)
Sep  4 05:56:01 luna CRON[18813]: (CRON) info (No MTA installed, discarding output)

Как я заметил, вывод журнала останавливается на /bin/date .

1 ответ1

4

% лечится специально cron. Он используется для обозначения конца части команды и начала стандартного ввода. Таким образом, вы должны избежать этого, например: \% .

Из справочной страницы crontab:

Вся командная часть строки, вплоть до новой строки или символа%, будет выполнена /bin /sh или оболочкой, указанной в переменной SHELL файла crontab.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .