Задания Cron в DirectAdmin

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

В DirectAdmin задания Cron обычно находятся в разделе Advanced Features или Advanced ToolsCron Jobs.

Как работают поля расписания Cron

ПолеЧто означаетПример
Minute0-59*/15 — каждые 15 минут
Hour0-232 — в 02:00
Day of month1-311 — первого числа месяца
Month1-12* — каждый месяц
Day of week0-70 или 7 — воскресенье

Звездочка * означает “каждое значение”. Будьте внимательны: если во всех полях стоит *, команда будет запускаться каждую минуту.

Частые варианты расписаний

РасписаниеЧто означает
*/15 * * * *Каждые 15 минут
0 * * * *Каждый час
0 2 * * *Каждый день в 02:00
0 3 * * 1Каждый понедельник в 03:00
0 4 1 * *Первого числа каждого месяца в 04:00

Не запускайте тяжелые скрипты каждую минуту, если не понимаете нагрузку и если в скрипте нет защиты от параллельных запусков.

Как правильно запускать PHP-скрипты

Для PHP-скриптов лучше использовать PHP CLI, а не открытие URL через браузер:

/usr/local/bin/php /home/user/domains/example.com/public_html/cron.php

Если скрипт должен запускаться из папки сайта, используйте cd перед командой:

cd /home/user/domains/example.com/public_html && /usr/local/bin/php cron.php

Замените user, example.com и путь к файлу на реальные данные вашего хостинг-аккаунта.

Логирование Cron

На этапе настройки обязательно пишите вывод Cron в лог. Так проще понять, запускается ли скрипт и какие ошибки он возвращает.

cd /home/user/domains/example.com/public_html && /usr/local/bin/php cron.php >> /home/user/cron.log 2>&1

Для отдельного сайта можно хранить лог вне public_html, например:

/home/user/logs/site-cron.log

Не храните огромные логи бесконечно. Если лог быстро растет, очищайте его или настройте ротацию.

Защита от наложения запусков

Если скрипт выполняется дольше, чем интервал между запусками, несколько копий могут работать одновременно. Это может создать нагрузку или выполнить действие дважды. Простая защита — запуск через lock-файл:

flock -n /home/user/cron.lock /usr/local/bin/php /home/user/domains/example.com/public_html/cron.php >> /home/user/cron.log 2>&1

Если одна копия уже выполняется, следующая не стартует.

Запуск URL через curl

Запуск по URL используйте только если скрипт специально рассчитан на вызов через web:

/usr/bin/curl -fsS https://example.com/cron.php >> /home/user/cron.log 2>&1

Если cron-URL не должен быть публичным, защитите его секретным токеном или ограничьте доступ по IP. Не оставляйте административные cron-скрипты открытыми для всех.

Перед добавлением задания

  • Если есть SSH-доступ, сначала проверьте команду вручную.
  • Используйте абсолютные пути к PHP, скриптам и логам.
  • Начинайте с безопасного интервала, например раз в 15 или 30 минут.
  • Включите логирование хотя бы на первые дни.
  • Проверьте, что скрипт не отправляет дубли писем и не повторяет платные действия.