Для запуска служб через таймеры в systemd вы используете два файла модулей. Файл X.service для описания фактической службы и файл X.timer для описания того, когда служба должна быть запущена.
Чтобы включать и выключать службу, как вы описываете, лучшее, что я могу придумать, - это иметь отдельную пару файлов модулей Xoff , где файлы службы взаимно конфликтуют с друг с другом. Служба Xoff на самом деле ничего не делает, она просто «запускается», когда реальная служба отключена.
Чтобы дать вам представление, вот игрушечный пример со службой sleep , которая включается каждую четную минуту и выключается каждую нечетную минуту.
sleep.service:
[Unit]
Description=Test service not doing anything real.
Conflicts=sleepoff.service
[Service]
ExecStart=/usr/bin/sleep 1d
sleep.timer:
[Unit]
Description=Timer to start the sleep service.
[Timer]
OnCalendar=*:0/2
sleepoff.service:
[Unit]
Description=Dummy service "running" when the real unit is off.
Conflicts=sleep.service
[Service]
Type=oneshot
ExecStart=/usr/bin/true
RemainAfterExit=true
sleepoff.timer:
[Unit]
Description=Timer to stop the sleep service.
[Timer]
OnCalendar=*:1/2