Cron Job: Полное Руководство для Начинающих 2022

Cron Job: Полное Руководство для Начинающих  2022

Чем бы вы не занимались, практически всегда есть возможность работать более эффективно. Так, например, занятые веб-специалисты нашли способ автоматизировать некоторые процессы, чтобы не тратить своё время на обработку повторяющихся задач. Одним из таких способов является cron job, или запланированные задания cron, доступные пользователям Unix-подобных операционных систем.

В этой статье мы расскажем об основах cron jobs, или как работают запланированные (отложенные) задачи.

Сэкономьте до 77%, ознакомьтесь с VPS-планами Hostinger!

К планам

Cron и Cron Job: Основы

Создавать и редактировать cron-задания можно разными способами. В этом руководстве мы покажем вам, как это делать с помощью командной строки Linux (терминала).

Если у вас есть свой VPS в Hostinger, ваши учётные данные для входа находятся во вкладке управления VPS. Подключитесь к вашему серверу по SSH. Если что-то не получается, ознакомьтесь с нашим руководством по PuTTY SSH.

Вот некоторые основные операции с cron:

Если вы хотите изменить crontab-файл (файл содержащий инструкции по выполнению запланированных заданий), то есть создать и настроить своё первое cron job, введите в терминале следующую команду:

crontab -e

Вот, как будет выглядеть результат.

Результат Команды crontab -e

Скорее всего вы попадёте в редактор vi. Так как этот редактор довольно часто используется при работе с cron, лучше ознакомится с основными командами vi. Так вы будете чувствовать себя более уверенно.

Если вы хотите изменить crontab-файл другого пользователя, используйте команду crontab -u username -e. Имейте в виду, что вы можете редактировать чужие файлы только как суперпользователь, то есть вам нужно ввести sudo su перед командой.

Команда Редактирования Crontab-файла Другого Пользователя

Если вы хотите удалить текущий файл crontab текущего пользователя, введите следующую команду:

crontab -r

Команда ниже делает то же самое, что и -r, однако она просит подтвердить действие, прежде чем удалить crontab:

crontab -i

Если вы хотите отобразить содержимое файла crontab, в который вы зашли, введите в терминале следующую команду:

crontab -l

Ещё одна операция этой команды позволяет посмотреть есть ли у вас crontab-файлы. Просто введите crontab -l. Если у вас нет созданных файлов, вывод покажет следующий результат:

Вывод, Показывающий Отсутствие Каких-либо crontab-файлов

Если вы хотите просмотреть списки crontab-файлов других пользователей, просто введите crontab -u username -l как суперпользователь.

Команда Просмотра crontab-файлов Других Пользователей

Теперь, когда вы ознакомились с базовыми операциями, пора рассмотреть основной синтаксис cron.

По сути, crontab-файл состоит из двух частей: таймера расписания и команды. Вот как записывается команда:

* * * * * /bin/sh backup.sh
  • ***** /bin/sh backup.sh — cron job значит запуск резервного копирования каждую минуту.
  • 30 18 * * * rm /home/sydtesting/tmp/* означает, что файлы tmp будут удаляться из /home/sydtesting/tmp каждый день в 18:30.

Давайте углубимся в некоторые детали.

Как Правильно Написать Синтаксис Cron

Crontab-файл имеет пять полей. Каждое поле представлено звёздочкой и определяет дату и время задачи, которая должна выполняться повторно.

Синтаксис Cron Job

  • Минуты — минута часа, в которую будет запущена команда, указывается в диапазоне от 0 до 59.
  • Часы — час, когда начнётся выполнение команды, в диапазоне от 0 до 23.
  • День месяца — в какой день месяца вы хотите запускать команду, в диапазоне от 1 до 31.
  • Месяц — в какой месяц будет выполняться указанная команда, в диапазоне от 1 до 12.
  • День недели — в какой день недели вы хотите выполнять команду, в диапазоне от 0 до 6 (воскресенье — 0).

Кроме того, важно использовать правильные символы.

  • Звёздочка (*) — чтобы определить параметры планирования.
  • Запятая (,) — чтобы указать два или больше вариантов времени выполнения одной и той же команды.
  • Дефис (-) — чтобы задать диапазон времени выполнения одной команды.
  • Косая черта (/) — для создания заданных интервалов времени в определённом диапазоне.
  • Last (L) — для конкретной цели, чтобы определить последний день недели в данном месяце. Например, 3L означает последнюю среду.
  • Рабочий день (W) — в табах числа и месяца, мы также можем использовать этот символ, чтобы определить ближайший рабочий день недели к заданному времени. Например, 1W означает, что скрипт будет запущен в ближайший рабочий день к первому числу, если 1-ое — Воскресенье, команда будет выполняться в понедельник (2-го).
  • Решетка (#) — чтобы указать день недели в месяце, даёт возможность выбрать цифру в диапазоне от 1 до 5. Например, 1#2 означает второй понедельник.
  • Вопросительный знак (?) — например, чтобы выбрать определённый день для запуска скрипта, нам нужно указать либо число месяца, либо номер дня, мы не можем указывать оба значения одновременно. Вопросительный знак даёт возможность оставить одно значение пустым.

Cron: Примеры

Теперь, когда вы ознакомились с синтаксисом cron, мы дадим больше примеров, которые помогут вам лучше понять изложенные выше правила.

Прежде чем двигаться дальше, обратите внимание, что вывод команды будет автоматически отправлен на вашу локальную электронную почту. Если вы не хотите получать эти письма, просто добавьте к синтаксису >/dev/null 2>&1, как показано в примере:

0 5 * * * /root/backup.sh >/dev/null 2>&1

Если вы хотите, чтобы вывод приходил на другую почту, вы можете добавить MAILTO, а затем адрес электронной почты. Например:

MAILTO="mojo_imia@hostinger.com"
0 3 * * * /root/backup.sh >/dev/null 2>&1

Больше примеров синтаксиса:

Выражение Значение
0 0 * * * /bin/sh backup.sh Выполнять резервное копирование базы данных в полночь один раз в день.
0 6,18 * * * /bin/sh backup.sh Выполнять резервное копирование БД два раза в день в 6 утра и 6 вечера.
0 */6 * * * /scripts/monitor.sh Проводить мониторинг каждые шесть часов.
*/10 * * * * /home/user/script.sh Выполнять cron job для файла сценария, находящегося в домашнем каталоге, каждые 10 минут.
0 * 20 7 * /bin/sh backup.sh Запускать резервное копирование базы данных каждый час каждого 20 июля.
0 0 * * 2 * /bin/sh Запускать резервное копирование БД в полночь каждый вторник.
* * * 1,2,5 *  /script/script.sh Выполнить команду в январе, феврале и мае.
10-59/5 5 * * * /home/user/script.sh Выполнять команду каждые 5 минут в 5 часов утра, начиная с 5:10 утра.
0 8 1 */3 * /home/user/script.sh Запускать команду ежеквартально в 1-й день в 8 утра.
* * * * * /scripts/script.sh; /scripts/scrit2.sh Чтобы запланировать несколько заданий в одном cron job.
@reboot /scripts/script.sh Чтобы выполнять определённую задачу каждый раз при запуске системы.
0 0 1 * *  /home/user/script.sh Выполнить команду в первый день каждого месяца.

Разрешения Cron 

Для cron-заданий важны два файла.

  • /etc/cron.allow — если существует cron.allow, он должен содержать имя пользователя, чтобы тот мог использовать cron-задания.
  • /etc/cron.deny — если файл cron.allow не существует, вместо него есть файл cron.deny, то для того, чтобы пользователь мог создавать и редактировать cron-задачи, его не должно быть в этом файле.

Что Такое Cron Job?

Cron — это утилита для планирования повторяющихся заданий. Отложенное/запланированное задание — это и есть cron job.

Если вы просто хотите запланировать задачу, чтобы она выполнилась один раз, но позже, тогда вам нужно использовать другую команду. Если же речь идёт о повторяющихся задачах, то cron — необходимое вам решение.

Cron — демон, а это означает, что он работает в фоновом режиме для выполнения не интерактивных заданий. В Windows примером фоновых процессов являются Службы.

Демон всегда находится в состоянии бездействия и ожидает, когда команда попросит его выполнить определённую задачу — либо на текущем компьютере, либо на другой любой машине в сети.

Файл cron — это простой текстовый файл, который содержит команды для запуска в определённое время. Системный файл crontab по умолчанию — /etc/crontab, он находится в каталоге crontab /etc/cron.*/. Только системные администраторы могут редактировать системный crontab-файл.

Однако, поскольку Unix-подобные операционные системы поддерживают несколько пользователей, каждый из них может создать свой собственный crontab-файл и запускать команды в любое время. Демон cron проверяет файл и запускает команды в фоновом режиме.

С помощью cron-заданий вы можете автоматизировать обслуживание системы, мониторинг дискового пространства и выполнение резервного копирования. По своей природе cron-задачи отлично подходят для компьютера, который должен работать круглосуточно, то есть для сервера.

Обратите внимание, что хотя cron в основном используют системные администраторы, веб-разработчикам тоже может пригодиться этот замечательный инструмент. Например, cron можно использовать, чтобы деактивировать просроченные учётные записи, проверять неработающие ссылки или даже рассылать новостные письма целевой аудитории.

Выводы

Автоматизация повторяющихся задач не только поможет вам работать более эффективно, но и вовремя выполнять все необходимые действия.

Cron job — отличный способ управления повседневными задачами, который подойдёт как системным администраторам, так и другим веб-специалистам, включая разработчиков. Всё, что вам нужно сделать, это использовать правильную команду и выбрать правильное время для её выполнения.

Вот некоторые из основных команд:

  • crontab e — создать и отредактировать crontab-файл.
  • crontab -u username -e — редактировать crontab-файл другого пользователя с правами суперпользователя.
  • crontab -l — просмотреть список crontab-файлов текущих пользователей.
  • crontab -r — удалить файлы crontab.
  • crontab -a imia_faila — установить имя файла как crontab-файл (в некоторых системах –a не требуется).

А теперь пришло время попрактиковаться и заставить cron работать на вас!

Author
Автор

Olha L.

Ольга вже близько восьми років працює менеджером у сфері IT, три з яких вона займається SEO. Написання технічних завдань та інструкцій — один з її основних обов'язків. Її хобі — дізнаватися щось нове і створювати цікаві та корисні статті про сучасні технології, веброзробку, мови програмування, пошукову оптимізацію сайтів та багато іншого.