Как проверить, работает ли задача CRON на сервере

4 мин чтения
CRON используется для автоматического запуска скриптов по расписанию: отправки уведомлений, импорта данных, очистки временных файлов, выполнения агентов и других фоновых задач.

Но иногда возникает ситуация: задача настроена, время указано правильно, а нужный скрипт всё равно не выполняется.

Как понять, работает ли сам CRON на сервере?

Самый простой способ — создать отдельный тестовый PHP-скрипт, который при каждом запуске будет добавлять текущую дату и время в лог-файл.

1. Создаём тестовый PHP-файл

Например, создадим в корне сайта файл:


cron-test.php

И добавим в него следующий код:


<?php

$logFile = __DIR__ . '/cron-test.log';

file_put_contents(
    $logFile,
    'CRON запущен: ' . date('Y-m-d H:i:s') . PHP_EOL,
    FILE_APPEND | LOCK_EX
);

При каждом запуске скрипта в файл cron-test.log будет добавляться новая строка с текущей датой и временем.

Например:


CRON запущен: 2026-09-25 14:01:00
CRON запущен: 2026-09-25 14:02:00
CRON запущен: 2026-09-25 14:03:00

Если файл создаётся и новые строки в нём появляются по расписанию — значит системный планировщик работает.

2. Настраиваем задачу CRON

Для проверки удобно временно запускать скрипт каждую минуту.

Пример команды:


* * * * * /usr/bin/php /home/user/www/site.ru/cron-test.php

Здесь:

* * * * * — запуск каждую минуту;
/usr/bin/php — путь к PHP CLI на сервере;
/home/user/www/site.ru/cron-test.php — полный путь к тестовому скрипту.

Пути на разных серверах отличаются, поэтому не стоит просто копировать команду из примера.

Если не знаете путь к PHP или полный путь к сайту — их лучше уточнить в панели управления сервером или у технической поддержки хостинга.

3. Проверяем результат

После добавления задачи подождите несколько минут и откройте файл:


cron-test.log

Если внутри появляются новые строки примерно раз в минуту:


CRON запущен: 2026-09-25 14:01:00
CRON запущен: 2026-09-25 14:02:00
CRON запущен: 2026-09-25 14:03:00

значит CRON работает корректно.

Если файл не появился или остаётся пустым — проблема находится на уровне системного планировщика, команды запуска или путей к PHP и скрипту.

4. Проверяем PHP-скрипт вручную

Перед настройкой CRON полезно проверить сам PHP-файл из командной строки.

Например:


/usr/bin/php /home/user/www/site.ru/cron-test.php

После выполнения команды в файле cron-test.log должна появиться новая запись.

Если при ручном запуске скрипт работает, а через CRON — нет, значит проблема скорее всего именно в настройке планировщика.

Если скрипт не работает и при ручном запуске, CRON здесь ни при чём — сначала необходимо исправить ошибку в самом скрипте или команде запуска.

5. Как узнать путь к PHP

На сервере с доступом по SSH путь к PHP CLI можно посмотреть командой:


which php

Например, результат может быть таким:


/usr/bin/php

Также можно проверить версию PHP:


php -v

На сервере может быть установлено несколько версий PHP. В таком случае для CRON необходимо указать именно тот исполняемый файл, который требуется вашему сайту.

Например:


/usr/bin/php8.2 /home/user/www/site.ru/cron-test.php

6. Что означают звёздочки в CRON

Стандартная запись расписания состоит из пяти частей:


* * * * *
│ │ │ │ │
│ │ │ │ └─ день недели
│ │ │ └─── месяц
│ │ └───── день месяца
│ └─────── час
└───────── минута

Несколько примеров.

Запуск каждую минуту:


* * * * *

Запуск каждый час:


0 * * * *

Запуск каждый день в 08:15:


15 8 * * *

Запуск каждый день в полночь:


0 0 * * *

Запуск каждое воскресенье в 12:00:


0 12 * * 0

7. Куда записывать ошибки CRON

Если задача запускается, но PHP выдаёт ошибку, удобно временно перенаправить вывод в отдельный файл:


* * * * * /usr/bin/php /home/user/www/site.ru/cron-test.php >> /home/user/cron-error.log 2>&1

В таком случае стандартный вывод и ошибки PHP будут записываться в файл:


cron-error.log

Это сильно упрощает поиск причины, если скрипт работает в браузере, но не запускается через CRON.

После того как задача заработает, ненужный вывод можно отключить:


* * * * * /usr/bin/php /home/user/www/site.ru/script.php >/dev/null 2>&1

Но делать это лучше только после проверки — иначе вместе с выводом можно скрыть полезные сообщения об ошибках.

8. Не запускайте CRON через браузер без необходимости

Иногда в планировщике встречаются команды через wget или curl:


wget -q -O - https://site.ru/cron.php

или:


curl -s https://site.ru/cron.php

Такой способ возможен, но если есть доступ к PHP CLI, предпочтительнее запускать PHP-файл непосредственно на сервере.

В этом случае служебный скрипт не приходится делать доступным из интернета, а его выполнение меньше зависит от настроек веб-сервера.

9. После проверки удаляем тестовые файлы

Когда убедились, что CRON работает, тестовую задачу необходимо удалить или заменить реальной.

Файлы:


cron-test.php
cron-test.log

также лучше удалить, если они больше не нужны.

Кратко: как проверить CRON


1. Создаём простой PHP-скрипт, который пишет дату запуска в лог.
2. Добавляем его в CRON с запуском каждую минуту.
3. Ждём несколько минут.
4. Проверяем содержимое лог-файла.
5. Если записи появляются — CRON работает.
6. Если записей нет — проверяем путь к PHP, путь к скрипту и журнал ошибок.


Такой тест позволяет быстро понять, на каком уровне находится проблема: в самом CRON, в PHP или уже в рабочем скрипте.
Вернуться к блогу