Оглавление |
---|
Информация | ||
---|---|---|
| ||
Информация | ||
---|---|---|
| ||
|
Аннотация
Cron
запускается один раз при загрузке системы. Редактирование списка заданий рекомендуется выполнять при помощи команды:Command |
---|
sudo crontab -e |
Управление заданиями службы возможно из графического интерфейса через Планировщик задач.
Systemd
оперирует специально оформленными файлами конфигурации— юнитами (unit
). Каждый юнит отвечает за конкретную службу (*.service
), точку монтирования (*.mount
), устройство (*.device
), файл подкачки (*.swap
), сокет (*.socket
) и т. д. Юниты systemd
имеют фиксированный набор параметров, оформленных в виде параметров команды systemctl
(start, stop, reload, restart
и т.д.).
Различия таймеров и заданий cron
Основные причины для применения таймеров вместо заданий cron
:
Информация Для каждого таймера создается отдельный файл журнала
journalctl
Создание таймеров
По умолчанию файлы с юнитами , включая юниты с таймерами, распологаются в каталоге
/etc/systemd/system
. Файл с юнитом таймера имеет ссылку на файл с юнитом службы
Общая структура юнитов служб:
Блок кода | ||
---|---|---|
| ||
[Unit] Description= # имя и описание службы Type=oneshot # тип службы, указан oneshot, без порождения подпроцессов для упрощения взаимодействия с таймерами [Service] ExecStart=/usr/local/bin/<имя файла или сценария> # примеры выполняемой команды |
Справка доступна по команде man systemd.units
Общая структура юнитов таймеров:
Блок кода | ||
---|---|---|
| ||
[Unit] Description= # имя и краткое описание таймера [Timer] <Событие срабатывания таймера> Unit= # имя юнита запускаемой службы # Необязательные параметры: Persistent= true # выполнить немедленно после старта системы, если предыдущий запуск был пропущен AccuracySec=1h # точность выполнения таймера. # Параметр необходим для снижения нагрузки на ресурсы компьютера при одновременном запуске нескольких таймеров # Таймеры будут запускаться в разные моменты времени в пределах указанного диапазона WakeSystem=30s # интервал, через который будет осуществлен вывод ОС из режима ожидания (suspend) после окончания таймера # необязательная для таймеров секция [Install] WantedBy=timers.target # WantedBy= — указывает на целевое состояние при котором запускается данный юнит. Целевое состояние определяется статусом загруженной ОС - |
Перечегь целевых состояний:
Command |
---|
|
Справка доступна по команде man systemd.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 .... |
Монотонные таймеры
Блок кода | ||
---|---|---|
| ||
.... [Timer] <Событие> = <интервал> # Перечень событий: # OnActiveSec - старт текущего юнита таймера # OnBootSec - после загрузки ОС # OnStartupSec - после начала сеанса текущего пользователя # OnUnitActiveSec - при старте юнита службы # OnUnitInactiveSec - при завершении работы юнита службы # Пример: # OnActiveSec=50minutes .... |
Перез запуском таймера необходимо перезагрузить systemd:
Command |
---|
|
И проверить юниты на наличие синтаксических ошибок:
Command |
---|
|
Запуск таймера:
Command |
---|
|
Раскрыть | |||||||
---|---|---|---|---|---|---|---|
| |||||||
|
Временное выполнение таймера
Чтобы инициировать таймер, который будет работать только пока существует текущий сеанс, выполнить:
Command |
---|
|
Где:
--<событие>
это одно из событий срабатывания таймера (см Монотонные таймеры):
--on-active
--on-startup
--on-unit-active
--on-unit-inactive
--on-calendar
Справка по systemd-run
см. man 1 systemd-run
Управление таймерами
- получить список всех таймеров, определенных в системе:
Command systemctl list-timers --all
- получить список активных таймеров:
Command systemctl list-timers
- получить информацию о статусе конкретного таймера:
Command systemctl status <имя_таймера>.timer
указание
systemctl status *timer
выведет информацию обо всех таймерах, определенных в системе.
Пуск, автозапуск, перезапуск, останов, отключение аналогичны командам systemctl
для служб. Справка доступна по команде man systemctl
, краткая по systemctl -h
Просмотр журналов юнитов
Посмотреть записи журнала конкретного юнита:
Command |
---|
|
Чтобы ограничить вывод записей определенным интервалом, используется параметры -S
и -U (от и до), пример:
Command |
---|
|
Информация |
---|
Anacron это вспомогательный инструмент cron для запуска пропущенных cron во время отключения компьютера заданий. Anacron использует таймеры systemd . Следует различать параметры -u (юнит) и -U (до) инструмента |
или конретным интервалом (пример - день назад):
Command |
---|
|
Справка для journalctl
доступна по команде man
, краткая справка по параметрам - journalctl
journalctl -h
Просмотр журналов юнитов возможен вместе с журналами других служб из графического интерфейса через Журнал аудита.