планировщик в Linux и запуск по расписанию команд и приложений

Как запустить по расписанию команду?

Для редактирования расписания планировщика cron выполните:

crontab -e

Формат строк расписания имеет вид:

минута час день месяц день_недели команда

Минута — время в минутах от 0 до 59

Час — от 0 до 23
День — день месяца от 1 до 31
Месяц — от 1 до 12 либо буквенные обозначения jan — dec
День недели — от 0 до 6 (0 — воскресенье) или sat — sun
Команда — строка в формате командного интерпретатора которая будет исполнена, допускается запись типа команда1 && команда2 для запуска нескольких команд подряд.

Значения минут, часов, дней можно указывать следующим образом:
Значение — число обозначающее дату или время, допускается подстановочный знак *  допускающий полный диапазон значений

Несколько значений — допускается указывать несколько значений через запятую, например 2,14,22
Диапазон значений — указывается через дефис, например 2-10
Шаг значений — указывается через дробь, в знаменатель которой ставится шаг, например */3 — каждое третье значение 0, 3, 6, 9 и т.д. В качестве числителя должен быть диапазон значений либо звездочка.

Рассмотрим следующий пример записи:

0 8-19/2 * * 1 /home/tvs/test01

Она означает что каждый второй час с 8 до 19 (8, 10,12,14,16) по понедельникам запускать скрипт test в домашнем каталоге пользователя tvs. 

Сразу хотим предостеречь вас от распространенной ошибки, при указании периодического исполнения все даты должны быть указаны явно, звездочка обозначает полный диапазон значений, а не их отсутствие. Например если вам требуется исполнять некий скрипт каждый час с 10 до 15 неправильно будет:

* 10-15 * * * /home/tvs/test1
Данная строка приведет к запуску скрипта каждую минуту в диапазоне с 10 до 15 часов. Правильно будет:

0 10-15 * * * /home/tvs/test1

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

Кроме даты можно использовать ряд специальных строк:
 

@reboot — выполнять команду при перезагрузке
@yearly или @annually — выполнять 1 января, аналогично записи: "0 0 1 1 * "
@monthly — выполнять 1 числа каждого месяца, аналогично "0 0 1 * * "
@weekly — выполнять каждое воскресенье, равносильно "0 0 * * 0"
@daily или @midnight — ежедневно в полночь,"0 0 * * * "
@hourly — раз в час, "0 * * * * "

Так для ежедневного исполнения нашего скрипта каждую полночь можно написать:

@midnight /home/tvs/test1

Завершив составление расписания сохраняем файл и выходим из редактора. Пользовательское расписание будет сохранено в /var/spool/cron/crontabs под именем текущего пользователя. 

Для системных и административных задач предусмотрен файл /etc/crontab. Синтаксис записей в нем отличается наличием дополнительного значения — пользователя, от чьего имени будет запущено задание:

минута час день месяц день_недели пользователь команда

Пример такой записи:

0 19 * * 1-5 root /etc/backup

Согласно которой в 19:00 с понедельника по пятницу будет запускаться скрипт/etc/backup от имени пользователя root.

Данный файл также содержит системные расписания, поэтому к его редактированию следует подходить с осторожностью. Все системные и административные задания следует размещать именно в нем.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *