Задания по расписанию в cPanel и на своём сервере: формат строки, примеры и почему задание не выполняется.
Cron запускает команды и скрипты по расписанию: раз в десять минут, каждую ночь, по понедельникам. На хостинге задания добавляются в cPanel, на своём сервере — командой crontab.
В cPanel
Раздел «Дополнительно» → «Задания cron» (Cron Jobs). Выберите расписание из готовых вариантов или заполните поля вручную, а в поле «Команда» укажите, что запускать:
/usr/local/bin/php /home/логин/public_html/cron.php
/usr/local/bin/php — PHP версии по умолчанию. Если скрипту нужна определённая версия, укажите её путь, например для PHP 8.3: /opt/cpanel/ea-php83/root/usr/bin/php. Вывод задания cPanel присылает на почту, указанную в том же разделе; чтобы писем не было, допишите в конце команды >/dev/null 2>&1.
Формат строки
минута час день_месяца месяц день_недели команда
Звёздочка — «любое значение», */10 — «каждые 10», дни недели — от 0 (воскресенье) до 6. Время — по часам сервера.
# каждые 10 минут
*/10 * * * * /usr/local/bin/php /home/логин/public_html/cron.php
# каждый день в 3:30 ночи
30 3 * * * /usr/local/bin/php /home/логин/public_html/cron.php
# по пятницам в полночь
0 0 * * 5 /usr/local/bin/php /home/логин/public_html/cron.php
# первого числа каждого месяца в 00:00
0 0 1 * * /usr/local/bin/php /home/логин/public_html/cron.php
Почему задание не выполняется
- Относительные пути. Cron запускает команду не из папки сайта и с коротким списком каталогов в PATH. Указывайте полные пути: к программе (
/usr/local/bin/php, а неphp), к скрипту и к файлам, которые скрипт открывает. В PHP удобно строить пути от__DIR__. - Звёздочка в минутах.
* 3 * * *— это каждую минуту с 3:00 до 3:59, а не один раз ночью. Нужно0 3 * * *. - Ошибок не видно. Сохраняйте вывод в файл:
… >> /home/логин/cron.log 2>&1— и смотрите, что пишет скрипт. - Нет прав на запуск. Скрипт, который запускается сам, а не через php, должен быть исполняемым (
chmod 755 script.sh) и начинаться со строки вроде#!/bin/bash. - Файл из Windows. Если скрипт редактировали в Windows, он может не запускаться из-за окончаний строк — как исправить, в статье Файлы из Windows: окончания строк.
На своём сервере
crontab -e # открыть свои задания в редакторе
crontab -l # показать задания
Задания от имени root — sudo crontab -e. Если команды crontab нет, установите cron: sudo apt install cron в Debian и Ubuntu, sudo dnf install cronie в AlmaLinux. Журнал запусков: journalctl -u cron (Debian, Ubuntu), journalctl -u crond (AlmaLinux), файл /var/log/cron во FreeBSD.

