Как настроить задания Cron на выделенном сервере или VPS под Ubuntu

Опубликовано: 21.02.2022 - 19:13 | Ануфриенко Татьяна

Содержание

Для автоматического выполнения скриптов на сервере Ubuntu используются задания Cron. Этот метод автоматизации популярен среди веб-мастеров по всему миру. Чтобы лучше разобраться в настройке и работе Cron, рассмотрим основные термины:

  1. Cron — это планировщик, который позволяет запускать скрипты на сервере по заданному расписанию.
  2. Cron job — это конкретное задание, которое выполняется в определенное время с помощью Cron.
  3. Crontab — конфигурационный файл, содержащий записи о cron job. Он представляет собой таблицу или мини-базу данных.

Таким образом, все задания Cron сохраняются в конфигурационных файлах вместе с информацией о времени их выполнения.

Примеры использования Cron-задач

  • Автоматическое создание и отправка счетов клиентам, оформившим подписку.
  • Деактивация учетных записей клиентов, которые соответствуют определенным условиям, например, были неактивны длительное время.
  • Автоматическое использование почтового API для рассылки информационных уведомлений подписчикам.
  • Применение штрафных санкций к тем, кто нарушил график выплат по кредитам и т.д.

Настройка Cron-задач

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

Автоматизация с помощью Cron значительно упрощает управление серверными задачами, но важно следить за корректностью настроек. Ошибки в синтаксисе crontab могут привести к сбоям в работе запланированных процессов. Поэтому рекомендуется тестировать задания перед их добавлением в основной конфигурационный файл. Для проверки можно использовать временные crontab-файлы или команду crontab -l, чтобы убедиться в правильности всех записей.

Кроме этого, мониторинг выполнения Cron задач играет важную роль в их поддержке. Вы можете перенаправлять результаты выполнения скриптов в файлы логов, добавив команды вывода: >> /path/to/logfile 2>&1. Это позволит анализировать логи в случае возникновения неполадок и оперативно устранять проблемы.

Системные требования

  • VPS-сервер с установленной Ubuntu
  • Пользователь с правами sudo (не root)

Если всё это у вас есть, можно переходить к дальнейшим шагам.

Редактируем crontab с помощью текстового редактора nano

Для редактирования crontab, в котором находятся все задания cron, откройте окно терминала и выполните в нем следующую команду:

$ sudo nano /etc/crontab

После того как файл откроется, вы увидите несколько строк. Для нас интерес представляют заголовки столбцов и список, имеющихся заданий cron:

Каждый столбец (m, h, dom, mon, dow, user, command) имеет свое значение. Сначала идут 5 переменных, которые отвечают за время выполнения задания:

  • m – минута (значение минуты от 0–59);
  • h – час (значение минуты от 0–23);
  • dom – число месяца (значение минуты от 1–31);
  • mon – месяц (значение минуты от 1–12);
  • dow – день недели (значение минуты от 0–6, воскресенье - 0).

Затем идут переменные, которые определяют пользователя и само задание:

  • user - пользователь, от чьего имени будет запущено выполнение cron;
  • command - команда Linux или скрипт, которые нужно выполнить.

Примеры заданий cron

Вы можете контролировать время запуска своих задач в течение года. Вот несколько примеров полезных команд:

Крон, который запускается каждую минуту

* * * * * [пользователь] [команда]

Крон, который запускается на 5-й минуте каждого часа

5 * * * * [пользователь] [команда]

Крон, который запускается каждый час (каждый раз, когда минута становится нулевой)

0 * * * * [user] [command]

cron, который запускается каждый день в полночь (каждый раз, когда час становится равным нулю)

0 0 * * * [пользователь] [команда]

Cron, который запускается каждый день в 5:15 утра в декабре

15 5 * 12 * [пользователь] [команда]

Звездочки в таймингах crontab

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

Оператор деления/прямой слэш/оператор mod в заданиях Cron в Ubuntu

Внимательный читатель уже задается вопросом – а как запускать задания, например, каждые 5 минут? Покажем на примере:

*/5 * * * * * [пользователь] [команда]

В этом случае задание cron будет запускаться каждые 5 минут: 0, 5, 15, 20, 25, 30, 35, 40, 45, 50, 55. То есть каждый раз, когда текущее время будет кратно нулю без остатка.

Запятые в crontab

Используя запятые, вы можете указать несколько значений для одной переменной. Например, у вас есть приложение, которое должно готовить ежеквартальный отчет, то есть запускаться 4 раза в год. Это легко реализовать, используя следующее задание cron:

0 2 1 1,4,7,10 * [пользователь] [команда]

Как cron обработает это задание? Каждый первый день января, апреля, июля и октября в 2 часа ночи наше приложение будет автоматически запускаться. Если цифровая запись немного трудна для вас, вы можете использовать при составлении задания текстовые переменные:

0 2 1 Jan, Apr, Jul, Oct * [пользователь] [команда]

Тире в crontab Ubuntu

Кроме слэша и запятых при составлении задания cron, можно использовать тире. Оно будет обозначать диапазон значений. Например, если задачу нужно запускать раз в час между 6 и 9 часами утра, запись в crontab будет выглядеть так:

0 6–9 * * * * [пользователь] [команда].

Запуск файлов PHP через crontab в Ubuntu

CGI скрипты на стороне сервера Ubuntu будут запускаться без каких-либо доработок. А вот для запуска PHP скриптов, потребуется выполнить некоторые действия.

Чтобы запустить PHP-скрипт через crontab, используйте следующий синтаксис:

* * * * * * /usr/bin/php [путь к вашему php-скрипту]

Это заставит PHP-файл запускаться через тот интерпретатор PHP, который укажете вы, например, /usr/bin/php.

Пример

* * * * * root /usr/bin/php /var/backup.php

Это задание ежеминутно будет запускать скрипт резервного копирования

Заключение

Наличие инструментов для создания и запуска заданий cron, позволяет автоматизировать большинство рутинных процессов.

Кстати, после того как вы закончите редактировать конфигурационный файл '/etc/crontab' в редакторе nano, обязательно сохраните изменения в нем. Для этого нажмите CTRL+X и S.

И последний совет. Убедитесь, что на вашем сервере выставлен правильный часовой пояс, чтобы не искать причину того, что скрипты запускаются в непонятные дни и время.

 

  • Опыт работы в IT более 10 лет
  • копирайтер, переводчик, контент-менеджер, специалист по PR
Оценить эту страницу
0
Средняя: 1 (1 оценка)

Еще полезные статьи