Настройка CRON-заданий на выделенном сервере является важным аспектом автоматизации и регулярного выполнения задач на сервера с операционными системами Unix и Unix-подобными системами.
В этой статье мы рассмотрим основы настройки CRON-заданий на выделенном сервере и предоставим пошаговое руководство по созданию и управлению заданиями CRON.
CRON – это стандартный инструмент, используемый в Linux и его дистрибутивах для планирования и автоматизации задач. Он предоставляет возможность запуска программ или скриптов в заданное время или по расписанию.
В основе CRON лежит таблица crontab, которая является текстовым файлом, содержащим список задач и расписаний их выполнения. Каждая задача определяет команду, которую необходимо выполнить, и временные интервалы, в которые эта задача должна быть осуществлена.
Каждая строка таблицы crontab состоит из пяти или шести полей, разделённых пробелами или табуляцией. Эти поля определяют расписание выполнения задачи. Первые пять полей определяют минуты, часы, дни месяца, месяцы и дни недели, соответственно. В шестом поле, которое может быть опущено, указывается пользователь, от имени которого должна быть выполнена задача.
Кроме того, CRON предоставляет механизм логирования, который записывает результаты выполнения задач в специальные файлы журналов. Это позволяет отслеживать и анализировать выполнение задач, а также оперативно обнаруживать возможные проблемы.
CRON является мощным инструментом автоматизации, который широко используется системными администраторами и разработчиками для автоматического выполнения регулярных задач, таких как резервное копирование данных, обновление системы, отправка отчётов и многое другое.
Синтаксис CRON-заданий состоит из пяти или шести полей, разделённых пробелами или табуляцией. Каждое поле определяет временные интервалы, в которые задание должно быть выполнено.
Общий синтаксис CRON-заданий выглядит так:
Поле 1 |
Поле 2 |
Поле 3 |
Поле 4 |
Поле 5 |
Поле 6 |
команда |
* |
* |
* |
* |
* |
* |
|
Минуты |
Часы |
Дни |
Месяцы |
Дни недели |
Имя пользователя |
Важно! «*» – это любое значение, допустимое в выбранном поле.
Поля задаются следующим образом:
Допустимые значения: 0-59.
Символ «*» в поле минуты означает запрос – «каждую минуту».
Можно указывать конкретные значения, разделяя их запятыми. Например, «5,10,15» означает «в 5, 10 и 15 минут».
Допустимые значения: 0-23.
Символ «*» в поле часа означает «каждый час».
Можно указывать конкретные значения, разделяя их запятыми. Например, «1,8,20» означает «в 1, 8 и 20 часов».
Возможные значения: 1-31.
Символ «*» в поле дня месяца означает «каждый день».
Можно указывать конкретные значения, разделяя их запятыми. Например, «5,15,25» означает «в 5, 15 и 25 числах месяца».
Возможные значения: 1-12
Символ «*» в поле месяца означает «каждый месяц».
Можно указывать конкретные значения, разделяя их запятыми. Например, «1,6,12» означает «в январе, июне и декабре».
Возможные значения: 0-7
Символ «*» в поле дня недели означает «каждый день недели».
Можно указывать конкретные значения, разделяя их запятыми. Например, «1,3,5» означает «в понедельник, среду и пятницу».
Позволяет указать пользователя, от имени которого должна быть выполнена команда. Однако это поле опционально и может быть опущено.
Некоторые дополнительные возможности синтаксиса CRON-заданий включают использование символов «/», «-», «,» и «%».
Символ |
Значение |
Пример использования |
/ |
Позволяет задать цикличность временного интервала. |
*/5 – каждые 5 минут. |
- |
Позволяет задать диапазон значений. |
1-5 – в поле часов подразумевает выполнение команды или скрипта с 1 до 5 часов. |
, |
Позволяет перечислить несколько значений. |
1,3,5 – в поле дней недели инициирует выполнение команды или скрипта в понедельник, среду и пятницу. |
% |
Позволяет задать случайное значение для временного интервала |
*/%5 – в поле минут означает выполнение команды или скрипта каждые случайные 5 минут. |
Это основные элементы синтаксиса CRON-заданий. Используя их комбинацию, вы можете точно определить расписание выполнения задач согласно вашим требованиям.
Важно! Не оставляйте ни одно из полей пустым. В это правило не входит поле 6.
Общие примеры:
- «* * * * * команда» – выполнять заданную команду или скрипт каждую минуту.
- «0 8 * * * команда» – выполнять заданную команду или скрипт каждый день в 8:00 утра.
- «0 0 1,15 * * команда» – выполнять заданную команду или скрипт каждое 1-е и 15-е число месяца в полночь.
- «0 12 * * 1-5 команда» – выполнять заданную команду или скрипт каждый будний день (с понедельника по пятницу) в 12:00.
Важно! Убедитесь, что правильно указываете команду или путь к скрипту в поле. Так вы гарантируете себе их правильное выполнение в контексте CRON-задания.
Вот несколько примеров команд, которые можно использовать при настройке CRON-заданий:
Пример |
Значение |
* * * * * /usr/local/my_command |
Задача «/usr/local/my_command» будет выполняться каждую минуту. |
30 8 * * * /usr/local/my_script.sh |
Задание будет выполняться каждый день в 8:30 утра. |
*/15 * * * * /usr/local/my_command |
Задача «/usr/local/my_command» будет выполняться каждые 15 минут. |
0 * * * * /usr/local/my_command |
Задание будет выполняться каждый час, в начале каждого часа. |
0 2 * * * /usr/local/my_command |
«/usr/local/my_command» будет выполняться каждую ночь в 2 часа. |
0 10 * * 6 /usr/local/my_command |
Задание будет выполняться каждую субботу в 10 часов утра. |
0 12 1 * * /usr/local/my_command |
«/usr/local/my_command» будет выполняться каждый месяц первого числа в 12 часов дня. |
0 0 1 * * /usr/local/my_script.sh |
Задача «/usr/local/my_script.sh» будет запускаться первого числа каждого месяца в полночь. |
0 9 * * 1-5 /usr/local/my_command |
Задача «/usr/local/my_command» будет выполняться каждый будний день в 9:00 утра. |
0 * * * 1 /usr/local/my_script.sh |
Задание будет запускаться каждый час по понедельникам. |
Вы можете изменять параметры времени и команды в соответствии с вашими требованиями.
Если у вас установлен сервер с панелью управления ispmanager, вы можете воспользоваться ей для настройки CRON-заданий.
Для этого следуйте дальнейшим инструкциям:
При необходимости вы можете пропустить поле/поля, которые вам неинтересны.
Готово! Вы настроили CRON-задание.
Любой, кто использовал CRON для планирования задач в Linux, знает, что диагностика и устранение связанных с ним ошибок может быть довольно сложной задачей. Ошибки при запуске планировщика и невыполнение заданий – это всё то, с чем вы можете столкнуться, даже полностью следуя инструкциям.
Иными словами, CRON-задания могут завершаться неудачно по многим причинам, о которых мы сейчас и расскажем.
Если ваше CRON-задание не работает должным образом, сначала убедитесь, что правильно указали команду расписания.
Даже один символ может иметь огромное значение в функциональности прописанного задания. Например, замена символа «-» на «/» в приведённом ниже выражении кардинально меняет его работу.
Вариант 1: 0-10 14 * * команда
Вариант 2: 0/10 14 * * команда
В первом случае CRON-задание запускается каждую минуту с 14:00 до 14:10 каждый день. Во втором – каждые 10 минут каждый день с 14:00 в 14:50.
Чтобы устранить потенциальные ошибки планирования, сначала нужно найти запланированное задание, а затем внести необходимые изменения.
Как правило, если у вас нет прав суперпользователя root, вы не сможете получить доступ к заданию.
Ваше задание работает при запуске через командную строку, но не запускается через CRON? Это может быть связано с местом, из которого вы выполняете, или PATH, который вы используете.
Важно! Переменная PATH содержит список директорий, в которых операционная система ищет исполняемые файлы, когда вы вводите команду в командной строке без указания полного пути к файлу. Она является одним из механизмов поиска исполняемых файлов в системе.
В CRON-планировщике PATH по умолчанию установлен в /bin:/usr/bin. Кроме того, только /usr/bin или /bin будут искать исполняемые файлы.
По умолчанию задания CRON выполняются из домашнего каталога пользователя. Это означает, что, если вы используете иные директории (например /documents/script.sh), CRON не будет знать, где искать файл.
Если вы действительно хотите использовать файл из места, отличного от вашего домашнего каталога, вы должны использовать абсолютный путь. Абсолютные пути включают полный путь к файлу.
Например:
1 * * * * /путь/к/скрипту.sh
Кроме того, вы можете определить свой собственный путь к файлу и использовать его в команде расписания:
PATH=/bin:/usr/bin:/путь/к/скрипту.sh
1 * * * * команда
Задания CRON могут завершиться ошибкой из-за исчерпания определённых ресурсов. Например, из-за нехватки свободного места на диске.
Существуют различные способы проверить, сколько места на диске занято и чем оно используется.
Например, вы можете использовать команду df, которая показывает доступное и используемое дисковое пространство в Linux.
Ниже вы можете ознакомиться с некоторыми способами использования команды df:
Если CRON-задание не выполняется вообще, убедитесь, что служба CRON запущена и работает на вашем сервере.
Проверьте системные журналы или логи CRON для обнаружения возможных ошибок или проблем.
Настройка CRON-задания на выделенном сервере играет важную роль в автоматизации повторяющихся задач и обеспечении планового выполнения определённых операций.
Процесс настройки CRON может показаться сложным для начинающих, но наше руководство и понимание основных концепций помогут вам успешно осуществить эту задачу.