CRON – это планировщик заданий в Linux, который запускает выполнение скриптов по заданному расписанию.
Пример CRON задания
# .---------- minute (0-59)
# | .-------- hour (0-23)
# | | .------ day of month (1-31)
# | | | .---- month (1-12) OR jan, feb...
# | | | | .-- day of week (0-6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
Добавление задания в CRON
В операционной системе Cent OS (Linux) файл, отвечающий за выполнение заданий, лежит по такому пути: /etc/crontab.
Для его редактирования, заходим на сервер по протоколу ssh.
Для редактирования общего крона на сервере вводим консольную команду:
Для альтернативного внесения в cron — для каждого отдельного пользователя — смотрите ниже.
Исполняемые файлы имеют расширение sh. В начале файла принято записывать:
Как просмотреть логи в CRON
Если добавленное в CRON задание не выполняется, можно проверить ошибки в логах.
Возьмем скрипт из примера резервного копирования данных на Яндекс Диск.
Скрипт лежит в папке my_scripts и называется backup_webdav_day.sh. Для просмотра логов CRON
По умолчанию он имеет такой вид:
Команда означает, что скрипт будет запускаться в 2 часа каждую ночь.
Предположим, что выполнение команды не работает, нам нужно понять, почему так происходит. Изменяем в файле backup_webdav_day.sh данные скрипта, чтобы тот записывал ход выполнения работы в специальный лог файл, который будет создан в той же директории. И меняем время на ближайшее, допустим сейчас 16.00 и мы хотим узнать, будет ли работать скрипт. Тогда делаем его выполнение через 5 минут.
Ждём пока не наступит 16.05, а затем смотрим что показывает файл backup_webdav_day.log.
CRON отказано в доступе / Permission denied
Если скрипт не будет выполняться, то в логах файла вы увидите соответствующую ошибку. Например, в ошибке может находиться такая информация:
или
Это означает, что в операционной системе Linux, нет прав доступа к файлу. В этом случае файлу backup_webdav_day.sh присваиваем права доступа на исполнение – chmod +x:
После этого данная ошибка должна исчезнуть.
Альтернативное изменение cron в Ubuntu
Иногда изменение файла /etc/crontab напрямую не даёт результата.
Также этот способ добавления заданий в cron считается более надёжным. Задания добавляются конкретному пользователю.
Посмотреть, есть ли у пользователя задания в cron
Для внесения изменения в cron используем команду:
Добавляем в конце файла нужные условия, например:
Сохраняем файл и перезагружаем cron
Или так
какие условия вы добавили в конце файла? что за mister sh? можно писать попонятнее?
Это логин пользователя от которого будет исполняться. Обычно это root, здесь же в статье есть выше.