Я хочу различать модуль systemd, запускаемый таймером systemd или вызываемый вручную с помощью systemctl. Т.е. чтобы проверить, запускается ли резервное копирование как периодическое задание по расписанию или выполняется «по запросу».
Что я нашел на данный момент:
Запуск как периодических, так и ручных вызовов через systemd кажется более удобным, чем запись в MOTD пометки «Для запланированных операций используются таймеры systemd, для ручных задач используются скрипты в / usr / local / bin»;)
Есть ли у вас какие-либо идеи (кроме создания экземпляра модуля и модуля копирования с другой средой для ручного использования)?
но вот простой способ передать аргумент от вашего таймера вашему устройству, и это использовать шаблоны
пример
создать сервис с @
я имя
[Unit]
Description=test
[Service]
ExecStart=/bin/echo 'hello from %i'
тогда ваш таймер может быть чем-то вроде
[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 разных сервиса.