Главная

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

Содержание

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

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

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

Варианты использование заданий cron

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

Настройка задания cron

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

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

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

Все это у вас есть? Отлично, тогда можно двигаться дальше.

Редактируем 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.

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

 

Оценить эту страницу
0
Средняя: 1 (1 оценка)

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