Назад | Перейти на главную страницу

Как отличить запуск модуля systemd вручную или по таймеру?

Я хочу различать модуль systemd, запускаемый таймером systemd или вызываемый вручную с помощью systemctl. Т.е. чтобы проверить, запускается ли резервное копирование как периодическое задание по расписанию или выполняется «по запросу».

Что я нашел на данный момент:

Запуск как периодических, так и ручных вызовов через systemd кажется более удобным, чем запись в MOTD пометки «Для запланированных операций используются таймеры systemd, для ручных задач используются скрипты в / usr / local / bin»;)

Есть ли у вас какие-либо идеи (кроме создания экземпляра модуля и модуля копирования с другой средой для ручного использования)?

но вот простой способ передать аргумент от вашего таймера вашему устройству, и это использовать шаблоны

пример

создать сервис с @ я имя

/etc/systemd/system/me@.service

   [Unit]

   Description=test
   
   [Service]
   ExecStart=/bin/echo 'hello from %i'

тогда ваш таймер может быть чем-то вроде

/etc/systemd/system/me.timer

[Unit]
Description=timer for me

[Timer]
OnUnitActiveSec=10s
OnBootSec=10s
Unit=me@timer.service

[Install]
WantedBy=multi-user.target

вы видите, что теперь все, что вы проходите после @ станет %i в вашем служебном файле. так что теперь ты просто

[~] sudo systemctl daemon-reload 
[~] sudo systemctl start me.timer
[~] sudo systemctl status me@timer.service
● me@timer.service - test
   Loaded: loaded (/etc/systemd/system/me@.service; static; vendor preset: enabled)
   Active: active (running) since Thu 2018-02-08 19:35:38 PST; 7ms ago
 Main PID: 8899 (echo)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/system-me.slice/me@timer.service

Feb 08 19:35:38 algx systemd[1]: Started test.
Feb 08 19:35:38 algx echo[8899]: hello from timer

если вы хотите запустить модуль из cli, просто укажите ему другой параметр после @

[~] sudo systemctl start me@cli
[~] sudo systemctl status me@cli.service
✘  ~  sudo systemctl status me@cli.service
● me@cli.service - test
   Loaded: loaded (/etc/systemd/system/me@.service; static; vendor preset: enabled)
   Active: inactive (dead)

Feb 08 19:32:48 algx systemd[1]: Started test.
Feb 08 19:32:48 algx echo[8490]: hello from cli

таким образом у вас есть четкое различие в том, что такое таймер и что такое cli, но вы можете расширить это до любого типа триггера ... вы не поддерживаете файлы с двумя модулями, но у вас есть четкое разделение, потому что с точки зрения systemd это 2 разных сервиса.