Quelle est la bonne façon de désactiver une unité de minuterie systemd?

18

J'ai réussi à migrer quelques-uns de mes travaux cron vers systemd. J'ai suivi quelques guides et j'ai adopté l'approche standard de création de 3 fichiers:

myjob.timer - systemd timer unit
myjob.service - systemd service unit
myjob.sh

Comme vous pouvez probablement le deviner, à un certain moment, myjob.timer est déclenché, qui exécute myjob.service qui à son tour exécute myjob.sh.

J'ai la même configuration pour tous mes temporisateurs et maintenant que je vois que tout fonctionne bien, je veux désactiver myjob.timer, qui n'est qu'un testeur.

Dois-je juste faire:

systemctl --user disable myjob.timer

ou dois-je aussi faire:

systemctl --user disable myjob.service

Quelle est la bonne chose à faire? Je suis assez nouveau sur systemd, donc j'aimerais apprendre à faire les choses correctement. J'imagine qu'il est correct de désactiver les deux unités afin de maintenir le système libre de tout excédent de bagages.

bitofagoob
la source

Réponses:

18

s'il myjob.servicene contient aucun [Install]bloc, il suffit de désactiver simplement le temporisateur. Le chronomètre était la seule chose à démarrer le .servicefichier, donc avec .timerdésactivé, rien ne démarrera le .servicefichier.

N'oubliez pas non plus de courir systemctl --user stop myjob.timer. La désactivation de la minuterie empêche de démarrer le prochain démarrage, mais il n'a pas arrêter le chronomètre en cours d' exécution.

Mark Stosberg
la source
J'ai un bloc [Install] dans chacune de mes unités de minuterie. Il a une entrée, disant «WantedBy = default.target». Je l'ai obtenu des guides que j'ai suivis. Puis-je me débarrasser complètement du bloc [Install]?
bitofagoob
1
D'ACCORD. J'ai lu à propos de la section [Install] et je pense que WantedBy = default.target est juste là pour s'assurer que l'unité, lorsqu'elle est activée, prend vie pendant toute session de démarrage normale (multi-utilisateur ou graphique). Je vais suivre les conseils de Mark Stosberg et désactiver uniquement la minuterie. Je marquerai également sa réponse comme la solution. Vive Mark!
bitofagoob
2
Vous voulez la section [Installer] sur vos unités de minuterie afin qu'elles soient démarrées au démarrage. Habituellement WantedBy=timers.target. Vous n'avez besoin d'une [Install]section pour un service que si vous souhaitez que le service soit démarré au démarrage, ce qui semble ne pas être le cas dans ce cas.
Mark Stosberg
1
Merci. J'ai supprimé la section [Installer] de l'unité de service et changé la section [Installer] de ma minuterie en WantedBy = timers.target.
bitofagoob