LINUX.ORG.RU

mysqldump не работает из крона


0

2

Centos 5.7 - команда: /usr/bin/mysqldump -u user -h localhost --password='12345' baza | /usr/bin/gzip>/root/backups/mysql/`date +%H:%M:%S_%d.%m.%Y`.sql.gz - не работает в кроне (root), в чем может быть причина? пробовал без путей - тоже не работает. Через консоль срабатывает. Пол дня мучаюсь, думал вообще крон не работает, но проверил все нормально с ним.

крон выполняет команды в /bin/sh, не выставляет всех переменных, как при логине. Например нет $HOME и т.п. Также там другой PATH.

оберни в скрипт, перенаправь вывод в файл и почитай ошибки.

deadman ★★ ()

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

Решение - сделать файлик скрипта и запускать его из крона.

azure ★★ ()
Ответ на: комментарий от azure

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

Внезапно, крон не занимается запуском задачи, он запускает шелл, который уже выполняет команду, поэтому вы написали бред.

Переменные окружения SHELL и PATH должны быть указаны в crontab (может зависеть от версии cron'а).

ТС, тебе правильно сказали про debug output, сделай, как deadman сказал.

tiandrey ★★★★★ ()

+ ко всему сказанному выше может еще требоваться экранирование спецсимволов в date

YAR ★★★★★ ()

А до команды date полный путь почему не указан?

om-nom-nimouse ★★ ()

В крон можно затолкать команду:
sh -c 'foo | bar | foo2 | bar2'
Хотя это лишний геморрой с кавычками. Проще обернуть в скрипт.

imul ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.