Mysqldump создает пустой файл при запуске через cron в linux
у меня есть сценарий bash mysql_cron.sh это работает mysqldump
#!/bin/bash
/usr/local/mysql/bin/mysqldump -ujoe -ppassword > /tmp/somefile
Это прекрасно работает. Затем я вызываю его из cron:
20 * * * * /home/joe/mysql_cron.sh
и это создает файл / tmp / somefile, но файл всегда пуст. Я попытался добавить
source /home/joe/.bash_profile
к скрипту, чтобы убедиться, что cron имеет правильные переменные env, но это не помогает. Я вижу, что многие другие люди имеют эту проблему, но не нашли решения. Я также попробовал оператор ' > ' в crontab для cat любые ошибки cron в файле, но это, похоже, не генерирует никаких ошибок. Любые идеи по устранению неполадок приветствуются. Спасибо!
2 ответов
добавить вывод информации об ошибке в файл (как сказал Damp), чтобы вы могли проверить, есть ли какая-либо ошибка:
#!/bin/bash
/usr/local/mysql/bin/mysqldump -ujoe -ppassword > /tmp/somefile 2>&1
вы также можете взглянуть на файлы журнала MySQL в /var/log
в случае, если есть какой-то намек есть.
добавьте эту строку в свой скрипт и сравните результат между запуском его из cron и запуском его напрямую:
env > /tmp/env.$$.out
на $$
будет заменен в результирующем имени файла PID родительского процесса (cron или оболочки). Вы должны быть в состоянии diff
два файла и посмотреть, если ничего существенного различия между двумя средами.