====== Планировщик заданий ======
===== 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) ====
Разовое выполнение команды (выполнение когда загрузка системы небольшая)\\