Login
Newsletter
Werbung

Do, 27. Februar 2020, 15:00

Systemd Timer Units für zeitgesteuerte Aufgaben verwenden

Die Korrektheit der Unit-Dateien verifizieren

Man kann das Kommando systemd-analyze mit der Option verify verwenden, um die Korrektheit der Unit-Dateien zu prüfen. Falls Syntaxfehler vorhanden sind, wird es darauf hinweisen.

$ sudo systemd-analyze verify /etc/systemd/system/my-rsync.*
 [savona@centos7 bin]$ 

Wenn nichts ausgegeben wird, wurde die Datei erfolgreich verifiziert.

Den systemd-Timer starten

Wir sind nun bereit, den Timer zu starten. Dazu wird systemctl verwendet.

$ sudo systemctl start my-rsync.timer

Dauerhaftes Aktivieren des Systemd-Timers

Man kann den Systemd-Timer genauso aktivieren wie jeden anderen Service.

$ sudo systemctl enable my-rsync.timer

Den Job manuell starten

Falls man den Job einmal manuell ausführen will, kann man einfach den Service starten. Hier ein Beispiel:

$ ls -l /mnt/usb/
 total 0

$ sudo systemctl start my-rsync.service

$ ls -l /mnt/usb/
 total 40
 drwxr-xr-x. 5 savona savona 4096 Mar  3 18:40 Desktop
 drwxr-xr-x. 2 savona savona 4096 Jan 23 23:10 Documents
 drwxr-xr-x. 2 savona savona 4096 Jan 23 23:10 Downloads
 -rwxrwxr-x. 1 savona savona  104 Feb 28 21:05 hello.sh
 drwxr-xr-x. 2 savona savona 4096 Jan 23 23:10 Music
 drwxr-xr-x. 2 savona savona 4096 Jan 23 23:10 Pictures
 drwxr-xr-x. 2 savona savona 4096 Jan 23 23:10 Public
 drwxrwxr-x. 2 savona savona 4096 Feb 28 21:18 scripts
 drwxr-xr-x. 2 savona savona 4096 Jan 23 23:10 Templates
 drwxr-xr-x. 2 savona savona 4096 Jan 23 23:10 Videos

In diesem Fall haben wir das Skript ja im PATH abgelegt, so dass die manuelle Ausführung auch einfach dadurch geschehen kann, dass man das Skript unter seinem Namen aufruft.

$ my-rsync.sh

Ansehen der Systemd Timer-Logs mit Journalctl

Wie eingangs erwähnt, ist einer der Vorteile der Nutzung von Systemd-Timern, dass sie im Systemd-Journal geloggt werden. Wir können daher die entsprechenden Log-Einträge mit journalctl mit der Option -u (unit) ansehen.

$ sudo journalctl -u my-rsync
 -- Logs begin at Sun 2019-04-07 19:00:33 EDT, end at Sun 2019-04-07 19:05:55 EDT. --
 Apr 07 19:03:39 centos7 systemd[1]: Started "A script to backup all home dirs to usb drive".
 Apr 07 19:03:39 centos7 my-rsync.sh[14589]: sending incremental file list
 Apr 07 19:03:39 centos7 my-rsync.sh[14589]: ./
 Apr 07 19:03:39 centos7 my-rsync.sh[14589]: .ICEauthority
 Apr 07 19:03:39 centos7 my-rsync.sh[14589]: [105B blob data]
 Apr 07 19:03:39 centos7 my-rsync.sh[14589]: .bash_history
 Apr 07 19:03:39 centos7 my-rsync.sh[14589]: [105B blob data]
...

Fazit

In diesem Tutorial haben wir die Vorzüge von Systemd-Timer-Units im Vergleich zu Cron-Jobs erörtert. Es geht uns aber nicht darum, die Wichtigkeit von Cron herunterzuspielen. Beide Werkzeuge haben ihre Vorzüge, und manchmal ist weniger mehr. Wenn man einfach einen Job jeden Abend um 18 Uhr starten will, wäre Cron für mich die bessere Wahl. Wenn man jedoch einen Job 30 Sekunden nach dem Booten, aber nur wenn das Netzwerk verfügbar ist, starten will, dann ist eine Systemd-Unit wahrscheinlich vorzuziehen.

Hinweis

Dieser Artikel ist im Original auf pustorius.net erschienen. Übersetzung und Veröffentlichung mit freundlicher Genehmigung.

  • Das Werk darf vervielfältigt, verbreitet und öffentlich zugänglich gemacht werden, Abwandlungen und Bearbeitungen des Werkes müssen unter den gleichen Bedingungen weitergegeben werden. Der Name des Autors/Rechteinhabers muss in der von ihm festgelegten Weise genannt werden.

    - Weitere Informationen
Pro-Linux
Pro-Linux @Twitter
Neue Nachrichten
Werbung