я использую 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
Скорее всего, это проблема с правильным или путём.
Следует поговорить о двух моментах:
Вот что мне приходит в голову:
Вы уверены, что демон cron запущен? Проверь это.
Если это так, он должен регистрировать все выполняемые им задания, обычно вы можете найти его в / var / log / messages. Проверьте, действительно ли он пытается выполнить эту команду в это время.
Проверьте разрешения скрипта cron.
Если это так, проблема, вероятно, в другой среде - задания, выполняемые под 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 с символом '#'.