Можно ли вручную выполнить один системный спаренный системный сервисный таймер для целей тестирования?

21

У меня есть таймер / сервисный блок, который должен запускаться один раз в день при определенных --userусловиях. Он обнаруживается systemctl --user statusи регистрируется в журнале, но есть часть команды, которая не работает.

Кажется, что-то в команде неправильно интерпретируется. Я хочу поработать с модульным файлом и запустить сервис, изучить журнал и т. Д., Чтобы устранить проблему; однако редактирование таймера для запуска минуты в будущем, ожидание и проверка журнала ... утомительны.

Может ли что-то systemctl --user execute xxxxxx.serviceсделать, просто запустить эту чертову вещь, как будто сработал таймер?

Гас
источник

Ответы:

12

Вы можете активировать любой юнит вручную, если только он не содержит директиву RefuseManualStart=yesи / или RefuseManualStop=yes(которая делает именно то, что они говорят). Просто выдайте systemctl --user start <whatever>systemctl --user stop <whatever>сделайте наоборот).

Процитируем systemctl (1) :

начать шаблон ...

Запустите (активируйте) один или несколько модулей, указанных в командной строке.

<...>

остановить шаблон ...

Остановите (деактивируйте) один или несколько блоков, указанных в командной строке.

intelfx
источник
Не работает здесь:Failed to restart {foo}.service: Operation refused, unit {foo}.service may be requested by dependency only.
eMPee584
1
@ eMPee584 Так как этот ответ был написан, systemd получил новые директивы RefuseManualStart=и RefuseManualStop=(которые делают именно то, что они говорят). Я обновил свой ответ, чтобы упомянуть об этом.
intelfx