Запуск программ в определенное время с помощью Cron | ISPserver Перейти к основному содержанию

Помощь

Запуск программ в определенное время с помощью Cron

Настройка 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

Ограничения

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

Назад к категории