Linux Labs

Пакеты, службы, журналы / Ступень 11 из 13

Задания cron и таймеры systemd

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 4 из 8 · теория · 5 мин

Таймеры systemd

У systemd свои расписания — таймеры. Они запускают службы и пишут всё в журнал.

Таймер — юнит с окончанием .timer. Он задаёт момент запуска, а что делать — описывает одноимённая служба .service. OnCalendar=daily — каждый день в полночь, OnActiveSec=5s — через пять секунд после запуска таймера. Как systemd поймёт календарное выражение, покажет systemd-analyze calendar 'Mon *-*-* 02:15': следующее срабатывание — в ближайший понедельник в 02:15.

Таймер включают так же, как службу в начале модуля о службах: enable — запуск при загрузке, start — сейчас, enable --now — то и другое. systemctl list-timers показывает у каждого таймера следующий запуск (NEXT) и прошлый (LAST). Служба, которую запускает таймер, обычно короткая: сделала работу и завершилась, до следующего срабатывания она inactive. Её вывод, в отличие от cron, попадает в журнал службы.

Проверь себя 1 вопрос

lab-report.timer — active (waiting), а lab-report.service — inactive (dead) с Result=success. Что это значит?

  • Result=success — последний запуск службы удался. inactive значит, что сейчас она не работает: сделала работу и завершилась.

  • Службу запускает таймер, включают у такой пары таймер. Служба без своего [Install] и не включается: systemctl is-enabled пишет static.

Короткая служба таймера делает работу и завершается, поэтому между срабатываниями она inactive. Следующий запуск показывает systemctl list-timers в столбце NEXT.

Главное в шаге

  • Таймер .timer задаёт момент, служба .service — работу.
  • enable включает таймер при загрузке, start — сейчас; systemctl list-timers показывает NEXT и LAST.
  • Между срабатываниями служба таймера inactive, и это норма.
Ubuntu 24.04
Загрузка…