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.

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.