Назад | Перейти на главную страницу

ежедневное резервное копирование базы данных mysql на сервере ubuntu

я использую crontab -e на сервере ubuntu для запуска файла backup.sh каждую ночь в 02:00. Я написал: 00 02 * * * root /home/backup.sh затем /etc/init.d/cron restart Когда делать crontab -l это показывает:00 02 * * * root /home/backup.sh. Я могу запустить backup.sh сам, и он отлично работает. Но это не сработало автоматически по расписанию.

Когда вы запускаете свои задания cron как пользовательские задания (редактирование заданий с помощью crontab -e) вы не указываете пользователя. Если вы запускаете системные задания cron, вы можете указать user.

Либо поместите эту строку в /etc/crontab или /etc/cron.d/yourfile используя какой-нибудь редактор, например vi или nano Или удалите root перед /home/backup.sh

Дополнительное примечание: убедитесь, что у вас есть все ваши программы, например mysqldump в вашем скрипте либо с полными путями, либо убедитесь, что они находятся в вашей среде выполнения скриптов PATH (которая отличается от вашей оболочки PATH). Видеть:

man 5 crontab

ПРИМЕР CRON-ФАЙЛА

ПРИМЕР СИСТЕМЫ CRON FILE

Перенаправьте сообщения об ошибках в файл журнала и проверьте его.

/home/backup.sh 2>1 /home/backup.output

Скорее всего, это проблема с правильным или путём.

Следует поговорить о двух моментах:

  1. Вам не нужно перезапускать демон cron при установке нового задания cron.
  2. Наиболее частыми причинами сбоя заданий cron являются пользовательские привилегии / разрешения и переменные среды. Итак, вам нужно убедиться, что вы запускаете задание cron под одним и тем же пользователем. Кроме того, попробуйте изменить используемые команды, включив полный путь.

Вот что мне приходит в голову:

  1. Вы уверены, что демон cron запущен? Проверь это.

  2. Если это так, он должен регистрировать все выполняемые им задания, обычно вы можете найти его в / var / log / messages. Проверьте, действительно ли он пытается выполнить эту команду в это время.

  3. Проверьте разрешения скрипта cron.

  4. Если это так, проблема, вероятно, в другой среде - задания, выполняемые под cron, могут иметь разные $ PATH (поэтому вам нужно указать полный путь к командам в вашем скрипте). Cron должен отправлять сообщения об ошибках (и вообще любых) о выполняемых им заданиях. Проверьте файл / var / mail / root или настройте почтовый псевдоним root -> yout @ email в / etc / aliases.

Попробуйте отредактировать crontab следующим образом:

0 2 * * * root /home/backup.sh

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

Вам не нужна «корневая» часть. Это только для / etc / crontab.

Попробуйте вместо этого:

00 02 * * * /home/backup.sh.

И убедитесь, что ваш crontab имеет возврат каретки в конце строки, которая должна выполняться. Это известная ошибка во многих реализациях Cron, которая препятствует выполнению последней строки файла.

Еще лучше, просто поместите комментарий внизу вашего файла crontab с символом '#'.