Cron — планировщик задач Linux. Через ISPmanager вы можете добавлять, редактировать и удалять cron-задачи через графический интерфейс без редактирования crontab вручную.
Создание cron задачи
Главное меню → Cron → Создать.
| Поле | Описание |
|---|---|
| Пользователь | От чьего имени запускать |
| Минуты | 0–59 или * (каждую минуту) |
| Часы | 0–23 или * |
| Дни месяца | 1–31 или * |
| Месяцы | 1–12 или * |
| Дни недели | 0–7 (0,7=вс) или * |
| Команда | Полный путь к скрипту |
Примеры cron задач
# Каждый час
0 * * * * /usr/bin/php /var/www/user1/data/www/example.com/www/cron.php
# Каждый день в 03:00
0 3 * * * /usr/bin/php /var/www/user1/data/www/example.com/www/cleanup.php
# Каждые 5 минут
*/5 * * * * /usr/bin/php /var/www/user1/data/www/example.com/www/queue.php
# WordPress WP-Cron через curl (рекомендуется вместо wp-cron.php)
*/5 * * * * /usr/bin/curl -s https://example.com/wp-cron.php?doing_wp_cron > /dev/null
DISABLE_WP_CRON = true в wp-config.php) и запускать через системный cron — надёжнее и быстрее.WordPress Cron через системный cron
# wp-config.php
define('DISABLE_WP_CRON', true);
# Cron задача (каждые 5 минут)
*/5 * * * * /usr/bin/php /var/www/user1/data/www/example.com/www/wp-cron.php > /dev/null 2>&1
Логирование вывода cron
# Сохранять вывод в лог файл
0 3 * * * /usr/bin/php /var/www/cron.php >> /var/log/mycron.log 2>&1
# Игнорировать вывод
0 3 * * * /usr/bin/php /var/www/cron.php > /dev/null 2>&1
/usr/bin/php8.2 или /usr/bin/php. Относительные пути не работают в cron.Типичные ошибки cron в ISPmanager 6
| Симптом | Причина |
|---|---|
| sh: 1: /usr/bin/php: not found | На сервере включена мультиверсионность PHP, и нужный бинарник лежит не в /usr/bin/php, а, например, в /opt/php-8.2/bin/php |
| Задача не появилась в списке после создания | Форма сохраняется только по кнопке «Ok» внизу; переход на другую вкладку панели без сохранения отменяет ввод |
| Команда обрывается на символе % | % не экранирован и интерпретируется cron как перенос строки — актуально для date +%Y%m%d в бэкапах |
| Письмо об ошибке не приходит | ISPmanager 6 не пересылает вывод cron на почту по умолчанию — нужно явно добавить MAILTO в начало команды или перенаправить вывод в файл |
| Permission denied при редактировании чужой задачи | Дополнительный пользователь или реселлер панели не имеет прав уровня владельца аккаунта на этот cron |
| wp-cron.php запускается дважды подряд | Интервал cron совпадает с TTL внутренней блокировки WP-Cron; нужно развести расписания или добавить lock-файл в сам скрипт |
| Задача отработала, но сайт не видит изменений | PHP-CLI, из-под которого запущен cron, и PHP-FPM веб-процесса используют разные экземпляры OPcache; после деплоя через cron нужен отдельный сброс кеша для веба |
Единый системный лог cron
Если задач много и понять, какая именно не сработала, сложно — смотрите общий лог cron-демона: он покажет сам факт запуска, даже если PHP-скрипт внутри упал молча без вывода.
# На системах с systemd
journalctl -u cron --since today
# На системах с классическим syslog
grep CRON /var/log/syslog | tail -n 50
Когда cron в ISPmanager 6 не подходит
- Задачу нужно запускать чаще раза в минуту — минимальный шаг cron составляет 60 секунд независимо от панели
- Нужна очередь с повторными попытками и приоритетами — для постоянно работающего воркера (Supervisor, systemd unit) нужны root-права, которых у обычного аккаунта ISPmanager нет
- Требуется запуск операций с правами root (обновление системных пакетов, работа с другими аккаунтами) — доступен только crontab пользователя сайта
- Нужна цепочка зависимых шагов с условной логикой — cron умеет только грубую склейку команд через
&&в одной строке - Задачу должно запускать внешнее событие (webhook, изменение файла, платёж от платёжной системы), а не время по расписанию — cron реагирует только на часы, а не на события
Проверка результата
После создания задачи убедитесь, что она реально выполняется и не падает молча — подробный разбор системных логов есть в статье про логи и диагностику ISPmanager 6, а специфику cron именно для WordPress — в статье про WordPress в ISPmanager 6. Простое правило: если после трёх запусков в логе демона нет ни одной строки с именем вашей задачи — проблема не в PHP-скрипте, а в самой записи crontab.
# Посмотреть список системных cron-задач конкретного пользователя
crontab -l -u user1
# Проверить последний вызов скрипта в логе домена
tail -n 50 /var/www/user1/data/logs/example.com.log | grep cron.php