Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 19 Следующий »

Данная статья применима к

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.5) (частично)
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12

Аннотация

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

sudo crontab -e

Справка по инструменту доступна по команде man cron. Управление возможно из графического интерфейса : ПускПанель управленияСистемаПланировщик задач.


Systemd — системная служба, которая обеспечивает параллельный запуск других служб в процессе загрузки ОС. Systemd оперирует специально оформленными файлами конфигурации— юнитами (unit). Каждый юнит отвечает за конкретную службу (*.service), точку монтирования (*.mount), устройство (*.device), файл подкачки (*.swap), сокет (*.socket) и т. д.  Юниты systemd имеют фиксированный набор параметров, оформленных в виде параметров команды systemctl (start, stop, reload, restart и т.д.).

Таймер systemd (далее просто таймер) файлы юнитов systemd, имя которых имеет расширение (*.timer); они позволяют контролировать файлы служб (*.service).

В зависимости от принципов запуска существуют три типа таймеров:

  • таймеры реального времени, срабатывающие с привязкой к системному календарю. Аналогичны инструменту cron, но обладают более гибкими настройками периодов работы.
  • монотонные таймеры запускающиеся в назначенное время, прошедшее с определенной начальной точки. Не сработают, если комптютер в режиме ожидания. 

Различия таймеров и заданий cron

Основные причины для применения таймеров вместо заданий cron :

  • таймеры используют единую систему команд инструмента управления службами systemctl;
  • таймеры имеют встроенные функции для ведения журналов и отслеживания состояния выполнения;

    Для каждого таймера создается отдельный файл журнала journalctl


  • таймеры могут инициировать выполнение задач на основе событий системы, например запуска или окончания работы службы, вызванной другим таймером, а не только по расписанию как cron;
  • приоритет выполнения таймеров выше, чем у заданий cron;
  • systemd предотвращает возникновение работающих юнитов-дублей;
  • задания cron выполняются последовательно, если заданиям cron назначен одинаковый интервал выполнениия первым выполнится требующее меньшего времени на выполнение. Таймеры могут работать асинхронно.

Создание таймеров

По умолчанию файлы с юнитами systemd, включая юниты с таймерами, распологаются в каталоге /etc/systemd/system. Файл с юнитом таймера (*.timer) имеет ссылку на файл с юнитом службы (*.service), которую он контролирует.

Общая структура юнитов служб:

/etc/systemd/system/<Служба>.service
[Unit]
Description= # имя и описание службы

[Service]
ExecStart=/usr/local/bin/<имя файла или сценария> # примеры выполняемой команды


Общая структура юнитов таймеров:

/etc/systemd/system/<Таймер>.timer
[Unit]
Description = # имя и краткое описание таймера

[Timer]
<Событие срабатывания таймера>
Persistent = true # выполнить немедленно после старта системы, если предыдущий запуск был пропущен
Unit = # имя юнита запускаемой службы

[Install]
WantedBy = timers.target

События срабатывания таймеров

Таймеры реального времени

/etc/systemd/system/<РеалВрТаймер>.timer
....
[Timer]
OnCalendar = DayOfWeek Year-Month-Day Hour:Minute:Second # параметр для задания таймера реального времени
# вместо DayOfWeek указать Sun, Mon, Tue, Wed, Thu, Fri, Sat . Чтобы таймер выполнялся ежедневно, нужно не указывать параметр или указать Mon..Sun
# вместо указания цифр для Year-Month-Day Hour:Minute:Second можно оставить *, например OnCalendar = Fri *-*-* 18:00:00 - вечер каждой пятницы
# справка о формате времени  - man 7 systemd.time
....

Монотонные таймеры

/etc/systemd/system/<МоноТаймер>.timer
....
[Timer]
<Событие> = <интервал>
# Перечень событий:
# OnActiveSec - старт текущего юнита таймера
# OnBootSec - после загрузки ОС
# OnStartupSec - после начала сеанса текущего пользователя
# OnUnitActiveSec - при старте юнита службы
# OnUnitInactiveSec - при завершении работы юнита службы
....

Временное выполнение таймера

Чтобы инициировать таймер, который будет работать только пока существует текущий сеанс, выполнить:

sudo systemd-run --<событие>="время" --unit="название службы"

 Где:

--<событие> это одно из событий срабатывания таймера (см): 

  • --on-active

  • --on-startup

  • --on-unit-active

  • --on-unit-inactive

  • --on-calendar

 Справка по systemd-run см. man 1 systemd-run


make-systemd-timer.sh
#


Проверка юнита на наличие синтаксических ошибок:

systemd-analyze verify 

Управление таймерами

  • получить список всех таймеров, определенных в системе:
    systemctl list-timers --all
  • получить список активных таймеров:
    systemctl list-timers
  • получить информацию о статусе конкретного таймера:
    systemctl status <имя_таймера>.timer

    указание systemctl status *timer выведет информацию обо всех таймерах, определенных в системе.

Пуск, автозапуск, перезапуск, останов, отключение аналогичны командам systemctl для служб. Справка доступна по команде man systemctl, краткая по systemctl -h

Просмотр журналов таймеров




  • Нет меток