- Хостинг
- Услуги
- Помощь
- Акции
Помощь
Запуск программ в определенное время с помощью Cron
- Настройка Cron в ISPmanager
- E-mail отчёты о выполнении расписания
- Настройка Cron по SSH
- Как запускать PHP-скрипты в нужное время
- Как настроить уведомления об ошибках
- Как запустить скрипт от имени конкретного пользователя
- Ограничения
Настройка Cron в ISPmanager
Перейдите в раздел Планировщик CRON
.
Создайте новую задачу с помощью одноименной кнопки. Заполните поля в открывшемся редакторе:
«Команда»: выполняемая команда или полный путь до скрипта (не обязательно для системных команд).
Для файла script.sh:
/home/script/script.sh
Проверьте, что файл доступен для исполнения и чтения владельцу. Если таких прав нет, добавьте их с помощью:
chmod u+rx /home/script/script.sh
«Описание»: необязательное поле-напоминание о том, что выполняет сценарий.
«Расписание»: повторяемость сценария. Доступна в двух вариантах:
1. Базовый — выбор из доступных вариантов: каждый час, при запуске и др. Например, запуск задачи по средам в 2 часа 45 минут ночи.
2. Экспертный — вы настраиваете периодичность исполнения команды самостоятельно. Например, запуск задачи 10 августа в 2 часа 2 минуты каждый год.
Когда заполните все обязательные поля, кликните ОК
.
E-mail отчёты о выполнении расписания
Чтобы получать уведомления о выполнении заданий, зайдите в Планировщик CRON → Настройки → Адрес e-mail
и укажите свою почту.
Проверьте, чтобы в настройках самой задачи не было галочки в поле «Не отправлять отчёт по e-mail».
Настройка Cron по ssh
Cron записывает расписание запуска программ в конфигурационный файл. Посмотреть и отредактировать его можно из командной строки с помощью текстового редактора:
# crontab -l
— посмотреть список заданий для текущего пользователя.
# crontab -u имя_пользователя -l
— посмотреть список заданий для указанного логина.
# crontab -e
— отредактировать список заданий для текущего пользователя. Используйте ключ -u имя_пользователя, чтобы отредактировать другой список для другого логина.
#crontab -r
— удаляет очередь заданий.
Задания выглядят так:
Минуты Часы Число месяца № месяца в году День недели (— вос. это 0 и 7 одновременно) Команда
— всё параметры через пробел.
Например, такое задание:
25 5 25 2 7 /home/script/script.sh
Сценарий выполнится в 05:25 25-ого февраля в воскресенье.
Чтобы задать несколько значений сразу, пишите их через запятую. Чтобы задать интервал, используйте тире.
59 4-9 5,7,31 1 0 /home/script/script.sh
Такое задание будет запускаться каждый час с 4:59 по 9:59 5-ого, 7-ого и 31-ого января в воскресенье, даже если дата и день недели не совпадают.
* — все возможные значения. В поле дни * означает запуск каждый день.
/ — дополнительная периодичность. “*/4” в поле дни — запуск каждые 4 дня.
44 17 3 * 7 /home/script/script.sh
Такой сценарий будет выполняться в 17:44 по воскресеньям и 3-его числа, даже когда этот день недели и дата не совпадают.
Чтобы сценарий выполнялся при запуске системы, вместо даты, месяца и т.д. пропишите @reboot:
@reboot /home/script/script.sh
Если сценарий нужно выполнить 1 раз за день, запланируйте это на ночь. Даже самый ресурсозатратный сценарий выполнится быстрее — в это время серверы нагружены меньше всего.
Как запускать PHP-скрипты в нужное время
Выполнять PHP-скрипты в определенный час и с нужной повторяемостью можно через локальный интерпретатор.
/usr/bin/php -q /home/script/script.php > /dev/null 2>&1
Но для многих скриптов локальное исполнение не подходит. Загрузите такой файл с помощью wget.
/usr/bin/wget -O /dev/null -q http://мойсайт.рф/script.php
Как настроить уведомления об ошибках
Чтобы отслеживать ошибки при выполнении программ, пропишите в начале cron-сценария:
MAILTO=адрес@домен.ru, где «адрес@домен.ru» — email для уведомлений, можно указать несколько через запятую.
Поместите в конце сценария /dev/null 2>&1
, если не хотите видеть вывод исполняемого скрипта в уведомлении. В Cron это будет выглядеть так:
0 1 * * * /usr/bin/php -q /home/script/script.php > /dev/null 2>&1
Удостоверьтесь, что синтаксис скриптов корректен — воспользуйтесь командой
/usr/bin/php -l script.php
Если всё в порядке, вы увидите: «No syntax errors detected in script.php».
Как запустить скрипт от имени конкретного пользователя
Запускать скрипты от имени суперпользователя — серьезная уязвимость. Чтобы не произошло непоправимого, лучше запускать программы и скрипты от имени пользователя с ограниченными правами.
Дайте нужному пользователю права на выполнение скрипта. В запланированном задании добавьте su -l имя_пользователя
0 1 * * * su -l vasya /usr/bin/php -q /home/script/script.php
Ограничения
Они такие же, как и для любых других программ: по количеству памяти, времени выполнения, размеру файлов и т.д.