Выполнение заданий через CRON в Linux

Admin Bash (Unix), CentOS, Linux, VPS (VDS) Обсудить

CRON – это планировщик заданий в Linux, который запускает выполнение скриптов по заданному расписанию.

Пример CRON задания

# Example:
# .---------- 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. Затем вводим консольную команду:

nano /etc/crontab

Исполняемые файлы имеют расширение sh. В начале файла принято записывать:

#!/bin/sh

Как просмотреть логи в CRON

Если добавленное в CRON задание не выполняется, можно проверить ошибки в логах.

Возьмем скрипт из примера резервного копирования данных на Яндекс Диск.

Скрипт лежит в папке my_scripts и называется backup_webdav_day.sh. Для просмотра логов CRON

По умолчанию он имеет такой вид:

00 2 * * * root /my_scripts/backup_webdav_day.sh >/dev/null 2>&1

Команда означает, что скрипт будет запускаться в 2 часа каждую ночь.

Предположим, что выполнение команды не работает, нам нужно понять, почему так происходит. Изменяем в файле backup_webdav_day.sh данные скрипта, чтобы тот записывал ход выполнения работы в специальный лог файл, который будет создан в той же директории. И меняем время на ближайшее, допустим сейчас 16.00 и мы хотим узнать, будет ли работать скрипт. Тогда делаем его выполнение через 5 минут.

05 16 * * * root /my_scripts/backup_webdav_day.sh > /my_scripts/backup_webdav_day.log 2>&1

Ждём пока не наступит 16.05, а затем смотрим что показывает файл backup_webdav_day.log.

cat /my_scripts/backup_webdav_day.log

CRON отказано в доступе / Permission denied

Если скрипт не будет выполняться, то в логах файла вы увидите соответствующую ошибку. Например, в ошибке может находиться такая информация:

/bin/bash: /my_scripts/backup_webdav_day.sh: Отказано в доступе

или

/bin/bash: /my_scripts/backup_webdav_day.sh: Permission denied

Это означает, что в операционной системе Linux, нет прав доступа к файлу. В этом случае файлу backup_webdav_day.sh присваиваем права доступа на исполнение – chmod +x:

chmod +x backup_webdav_day.sh

После этого данная ошибка должна исчезнуть.

Альтернативное изменение cron в Ubuntu

Иногда изменение файла /etc/crontab напрямую не даёт результата.

Также этот способ добавления заданий в cron считается более надёжным. Задания добавляются конкретному пользователю.

Посмотреть, есть ли у пользователя задания в cron

crontab -l

Для внесения изменения в cron используем команду:

crontab -e

Добавляем в конце файла нужные условия, например:

*/4 * * * * mister sh /home/mister/file

Сохраняем файл и перезагружаем cron

sudo service cron reload

Или так

/etc/init.d/cron reload

Привет. Ты находишься на моём сайте. Я разработчик. Здесь я делюсь своими наработками и знаниями. Спрашивай в комментариях, если тебе что-то не понятно или пиши, если есть что добавить.

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи: "Выполнение заданий через CRON в Linux".

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Если вам нужно добавить участок кода ставьте его между тегами <code></code>