systemd.service zu bestimmten Zeiten starten und stoppen

Ich möchte einen systemd.service zu bestimmten Zeiten starten und stoppen.
systemd
Jean Pütz
ubuntuusers
Autor:in

Joe Slam

Veröffentlichungsdatum

19. Januar 2024

Ich möchte einen bestimmten systemd Service zu bestimmten Zeiten starten und stoppen. Im Detail geht es um meinen BOINC-Client. Dieser soll von Montag bis Freitag um 17:00 Uhr gestartet, und (ebenfalls von Montag bis Freitag) um 8:00 Uhr morgens gestoppt werden.

Der BOINC-Client bringt bereits seine eigene boinc-client.service-Datei mit, so dass der Dienst mittels systemctl start boinc-client.service und systemctl stop boinc-client.service gestartet und gestoppt werden kann.

Mittels systemd sollen diese Befehle zu den genannten Zeiten ausgeführt werden.

Wrapper-Services

Ich erstelle mir zwei Hilfs-Services, die jeweils den BOINC-Client starten und stoppen.

FÜr den Starter-Service:

sudo nano /etc/systemd/system/start-boinc.service

[Unit]
Description=Start boinc service
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl start boinc-client.service

[Install]
WantedBy=multi-user.target

Für den Stopper-Service:

sudo nano /etc/systemd/system/stop-boinc.service

[Unit]
Description=Stop boinc service
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl stop boinc-client.service

[Install]
WantedBy=multi-user.target

Timer

Jetzt brauche ich nur noch zwei Timer, die jeweils die Wrapper-Services auslösen.

Für den Starter:

sudo nano /etc/systemd/system/start-boinc.timer

[Unit]
Description=Timer for starting BOINC client

[Timer]
OnCalendar=Mon-Fri *-*-* 17:00:00

[Install]
WantedBy=timers.target

Für den Stopper:

sudo nano /etc/systemd/system/stop-boinc.timer

[Unit]
Description=Timer for stopping BOINC client

[Timer]
OnCalendar=Mon-Fri *-*-* 08:00:00

[Install]
WantedBy=timers.target

Timer aktivieren

Jetzt müssen die neuen Dateien systemd bekannt gemacht werden:

sudo systemctl daemon-reload

Anschließend werden die Timer aktiviert.

sudo systemctl enable --now start-boinc.timer

sudo systemctl enable --now stop-boinc.timer

Wir können noch überprüfen, ob alles bereit ist.

sudo systemctl status start-boinc.timer

sudo systemctl status stop-boinc.timer

Fertig. Mein boinc-client.service wird nun von Montag bis Freitag jeweils um 17:00 Uhr gestartet und um 8:00 Uhr gestoppt.