Задания 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.
И последний совет. Убедитесь, что на вашем сервере выставлен правильный часовой пояс, чтобы не искать причину того, что скрипты запускаются в непонятные дни и время.