[systemd] Timer dans une plage horaire

Bonjour,

je souhaite activer mon service systemd toto.service toutes les 10 minutes, mais seulement dans une plage horaire donnée (8h-20h par exemple).

toto.service est un service “one-shot” de type simple, qui est appelé par son timer toto.timer:

[Unit]
Description=Activer toto toutes les 10 minutes

[Timer]
OnUnitActiveSec=10min

Jusque là pas de soucis, systemctl list-timers montre bien que toto.timer va activer toto.service toutes les 10 minutes.

Mais dans les différentes documentations que j’ai lues, je n’ai pas trouvé de moyen pour que toto.timer n’active pas toto.service entre 20h et 8h.

Alors je pourrais contourner le problème en modifiant toto.service (les commandes qu’il exécute) pour y ajouter un test du type “si il est entre 20h et 8h alors on ne fait rien”, ou alors avec un autre timer (ou un job cron) qui désactive toto.timer à 20h et le réactive à 8h, mais si vous connaissez une façon élégante de faire ça avec simplement la configuration du timer, je suis très intéressé.

(j’ai un peu hésité pour la section du forum où ouvrir ce thread, n’hésitez pas à déplacer si nécessaire)

Bon en fait en écrivant le post, je me suis rendu compte que je pourrais, à la place de OnUnitActiveSec=10min, utiliser OnCalendar=*-*-* 8..20:00,10,20,30,40,50:00 en ajoutant Persistent=true pour assurer une reprise en cas de pépin…
Comme quoi, formaliser correctement un problème, ça aide déjà pas mal.

2 J'aime