Главное о работе с cron на VPS
С планировщиком задач cron вы можете автоматически запускать на вашем Linux-сервере скрипты и программы в заданное время. Все задания cron прописываются в файле crontab, который создаётся одноимённой командой. Поговорим о том, как необходимо работать с такими файлами и как правильно указывать периодичность выполнения заданий в них.
Для работы с cron без панели управления, через консоль, необходимо подключение к серверу по SSH. Используйте команду crontab -e
, чтобы создать свой первый файл для заданий. После этого должен запуститься редактор для работы с cron и, вероятнее всего, это будет vi. Если вас он не устраивает, вы можете выбрать любой другой из доступных редакторов с помощью команды select-editor
. Команда crontab -e
впоследствии позволяет редактировать выбранный файл расписания, crontab -l
- выводить его содержимое, а crontab -r
— удалять файл. Создать новый файл можно с помощью команды crontab имя_файла
.
Чтобы включить отправку уведомлений на электронную почту о результатах выполнения команд из файла crontab, добавьте в файл строчку с указанием нужного адреса:
MAILTO= вашадрес@example.com
При этом можно указать не один, а сразу несколько адресов через запятую. А отключить эту функцию можно, указав в конце задачи команду > /dev/null 2>&1
.
Теперь поговорим о планировании заданий. Частота выполнения задаётся с помощью пяти блоков: минуты, часы, день месяца, месяц, день недели. Они прописываются в задании именно в таком порядке. Диапазоны основных допустимых значений:
- минуты: от 0 до 59;
- часы: от 0 до 23;
- день месяца: от 1 до 31;
- месяц: от 1 до 12 (январь —
1
, февраль —2
и т. д.); - день недели: от 1 до 7 (понедельник —
1
, вторник —2
и т. д.).
Также в каждом из блоков может использоваться знак астерикса (*), который обозначает все допустимые значения. То есть астерикс в блоке с минутами позволит выполнять задание каждую минуту, в блоке с часами — каждый час и так далее.
Значения необязательно указываются только числами из диапазонов. В блоке можно прописывать сразу несколько значений, для этого их нужно написать через запятую без пробела. Также можно обозначать интервалы, используя дефис: 2-10
, 45-55
. Эти интервалы в блоке минут говорили бы о том, что задание должно запускаться каждую минуту начиная со 2-ой и заканчивая 10-ой либо с 45-ой по 55-ую. А указать нужную периодичность можно с помощью астерикса, наклонной черты и числового значения после неё. */2
в блоке часов означает, что задание должно запускаться каждые два часа. Разбору конкретных примеров написания заданий мы посвятим одну из наших следующих статей.
Шестым блоком в задании указывается нужный файл. Необходимо прописывать абсолютный путь к нему, а также быть уверенным, что права доступа к нему позволяют вам хотя бы запускать этот файл. Отдельно стоит сказать о PHP-скриптах: для их запуска через cron требуется специальный интерпретатор, который определяется в зависимости от провайдера. А чтобы не иметь дело с интерпретаторами, можно воспользоваться программой wget.
Ограничений по использованию cron нет, однако если сервер будет перегружаться, то тогда будет установлено ограничение на использование cron чаще, чем раз в час или раз в несколько минут. В остальных случаях вы вполне можете использовать этот планировщик заданий для повышения качества работы с вашим сервером.