Планировщик задач Cron и команда crontab

Cron (Command Run ON) — это демон (фоновый процесс) в Unix-подобных операционных системах, предназначенный для выполнения заданий по расписанию, которые  называются cron jobs.

Crontab (Cron table) — это файл, который содержит список заданий для демона cron. Каждый пользователь (включая root) может иметь свой собственный crontab-файл.

Основное применение:

Синтаксис crontab

Каждая строка в crontab-файле представляет собой отдельное задание и имеет следующую структуру:

# .---------------- минута (0 - 59)
# |  .------------- час (0 - 23)
# |  |  .---------- день месяца (1 - 31)
# |  |  |  .------- месяц (1 - 12) ИЛИ jan,feb,mar,apr ...
# |  |  |  |  .---- день недели (0 - 7) (Воскресенье=0 или 7) ИЛИ sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  *  пользователь (опционально, только в /etc/crontab) команда к выполнению

В личных crontab пользователя (редактируемых через crontab -e) поле пользователь не указывается.

Примеры:

Допустимые значения временных параметров:

Параметр Допустимый интервал
минуты 0-59
часы 0-23
день месяца 1-31
месяц 1-12
день недели 0-7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)

Поле может быть задано явно или шаблоном:

Специальные символы и ключевые слова

Переменные окружения и пути

Cron выполняется в минимальном окружении. У него другой PATH и часто не заданы другие переменные, которые есть в вашем обычном shell (например, $HOME).

Всегда используйте полные абсолютные пути ко всему:

Управление заданиями

После сохранения изменений через crontab -e демон cron перезагружает конфигурацию автоматически, перезапускать службу cron (systemctl restart cron) не нужно.

Системные crontab-файлы

Помимо личных файлов пользователей, есть системные конфиги:

Особенности использования и лучшие практики

Выполнение PHP-файлов

Для выполнения php скриптов из cron необходим бинарный интерпретатора PHP.

Реальный путь на сервере к корневой директории сайта и путь к PHP уточните в службе поддержки хостинга.

# Пример запуска скрипта в 5 утра каждый день:
0 5 * * * /usr/bin/php -q /home/www/script.php

Обратите внимание, при запуске из cron опция -q указывает PHP не выдавать HTTP-заголовки.

Безопасность

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.