Was ist der richtige Weg, um eine System-Timer-Einheit zu deaktivieren?

18

Ich habe einige meiner Cron-Jobs erfolgreich auf systemd migriert. Ich habe einige Anleitungen befolgt und den Standardansatz gewählt, 3 Dateien zu erstellen:

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

Wie Sie wahrscheinlich erraten können, wird zu einem bestimmten Zeitpunkt der myjob.timer ausgelöst, der den myjob.service ausführt, der wiederum myjob.sh ausführt.

Ich habe das gleiche Setup für alle meine Timer und jetzt, da ich sehe, dass alles gut funktioniert, möchte ich myjob.timer deaktivieren, was nur ein Tester ist.

Mache ich nur:

systemctl --user disable myjob.timer

oder muss ich auch machen:

systemctl --user disable myjob.service

Was ist das Richtige? Ich bin ziemlich neu in systemd, also würde ich gerne lernen, wie man Sachen richtig macht. Ich vermute, dass es richtig ist, beide Einheiten zu deaktivieren, um das System frei von Übergepäck zu halten.

bitofagoob
quelle

Antworten:

18

Wenn es myjob.servicekeinen [Install]Block enthält , genügt es, den Timer zu deaktivieren. Der Timer war das Einzige, was die .serviceDatei .timergestartet hat. .serviceWenn er deaktiviert ist, wird die Datei nicht gestartet .

Denken Sie auch daran, zu laufen systemctl --user stop myjob.timer. Das Deaktivieren des Timers verhindert, dass er beim nächsten Start gestartet wird, stoppt jedoch nicht den aktuell ausgeführten Timer.

Mark Stosberg
quelle
Ich habe in jeder meiner Timereinheiten einen [Install] -Block. Es gibt einen Eintrag mit der Aufschrift "WantedBy = default.target". Ich habe das von den Führern bekommen, denen ich gefolgt bin. Kann ich den [Install] -Block einfach ganz loswerden?
Bitofagoob
1
IN ORDNUNG. Ich habe den Abschnitt [Install] gelesen und denke, dass WantedBy = default.target nur dazu da ist, um sicherzustellen, dass das Gerät, wenn es aktiviert ist, während einer normalen Boot-Sitzung (entweder für mehrere Benutzer oder grafisch) zum Leben erweckt wird. Ich werde Mark Stosbergs Rat befolgen und nur die Zeitschaltuhr deaktivieren. Ich werde auch seine Antwort als Lösung markieren. Prost Mark!
Bitofagoob
2
Sie möchten, dass der Abschnitt [Install] auf Ihren Timereinheiten angezeigt wird, damit sie beim Booten gestartet werden. Normalerweise WantedBy=timers.target. Sie benötigen nur einen [Install]Abschnitt für einen Dienst, wenn der Dienst zum Startzeitpunkt gestartet werden soll. Dies scheint in diesem Fall nicht der Fall zu sein.
Mark Stosberg
1
Vielen Dank. Ich habe den Abschnitt [Install] von der Wartungseinheit entfernt und den Abschnitt [Install] in meinem Timer in WantedBy = timers.target geändert.
Bitofagoob