Инструменты пользователя

Инструменты сайта


linux:overall:cron

Планировщик заданий

cron

Стандартный планировщик, выполняет указанные задания из файла /etc/crontab и из директорий /etc/cron.daily|monthly...
Файл crontab в основном системный, не стоит его использовать.
В каталоге /etc/cron.d могут располагаться файлы с заданиями (аналогично crontab).
В каталогах /etc/cron.daily|monthly.. могут располагаться сценарии, для исполнения в соответствующей периодичности.
Заданные правила через «crontab -e» хранятся в «/var/spool/cron/crontabs/« с указанием пользователя

Структура файла: - Минуты Часы День Месяц День_недели Владелец_процесса Команда

Примерное содержание файла в cron.d. Выполнение команд в 5:21 каждый понедельник.

# 21 5 * * 1 root apt update && apt upgrade > log.log

Утилита crontab

Утилита для пользователя, выполняет задания от пользователя.

  • -l - список заданий.
  • -e - добавить задание.
:!: Подробнее

Структура записи задачи:
минуты / часы / дни месяца / месяцы / дни недели / <строка, которая будет выполнена интерпретатором>

В полях времени, значения можно указывать через запятую либо через дефис, что означает перечисление либо диапазон
Можно указывать дни недели или месяцы поименно

Символ деления это указание шага, т.е. выражение «*/2» это запуск каждые две минуты
Шаги и интервалы можно смешивать, например «0-10/2» - запуск каждые две минуты в первые 10 минут каждого часа

Поддерживаются альтернативные указатели, типа »@reboot, @daily, @hourly»

В системной таблице задач (/etc/crontab), в 6ом столбце, указано имя пользователя, от которого нужно выполнить команду
Пользовательские crontab-файлы хранятся в «/var/cron/tabs/» (или «/var/spool/cron/crontabs/» в debian ветке)

В файле задач можно переопределить переменные окружения, например «HOME» или «SHELL». Все определяемые в файле переменные, будут переданы запускаемому процессу

В Debian системах, cron по умолчанию выполняет команды в dash (эти минимальная оболочка, полностью POSIX совместимая), в отличии от RH систем, в которых используется bash. В обоих случаях запускается в неинтерактивном режиме, не читая никакой доп информации

Cron запускается через систему инициализации systemd,

 

anacron

«Относительные задания» т.е. относительно запуска ОС.
Здесь указывается только 2 столбца - День и Время после запуска.
anacron имеет приоритет над cron.

Пример (/etc/anacrontab) Семидневный интервал, через 10 минут после запуска.

# 7 10 name action

Лог работы

# grep anacron /var/log/syslog
Выполнив задачу, anacron записывает дату в файле /var/spool/anacron.

systemctl таймеры

Позволяет запускать сценарии как службы, со всеми вытекающими

at (batch)

Разовое выполнение команды (выполнение когда загрузка системы небольшая)

linux/overall/cron.txt · Последнее изменение: 2024/06/29 10:58 — admin