Linux für Windows-Admins – Teil 4: systemd-Dienste und Automatisierung mit Cron

In den vorherigen Teilen der Serie „Linux für Windows-Admins“ haben wir die Grundlagen des Linux-Terminals, das Dateisystem und Rechte sowie Netzwerkkonfiguration behandelt. Im dritten Teil haben wir uns mit der Konfiguration von Netzwerken und der Firewall UFW beschäftigt. In diesem letzten Teil lernen Sie, wie Sie Dienste und Aufgaben unter Linux automatisieren können, indem Sie systemd-Dienste erstellen und Cron-Jobs einrichten.

Worum es geht und wann Sie das brauchen

Systemd ist der Prozess-Verwaltungsdienst (init system) in modernen Linux-Distributionen. Er verwaltet Dienste, Systeminitialisierung und Aufgaben. Cron hingegen ermöglicht die Automatisierung von wiederkehrenden Aufgaben wie Backups oder Wartungsaufgaben.

Wann Sie das brauchen:

  • Wenn Sie regelmäßige Aufgaben automatisieren möchten.
  • Wenn Sie sicherstellen wollen, dass Dienste zu einem bestimmten Zeitpunkt laufen.
  • Für Wartungsaufgaben und regelmäßige Systemtasks.

Falsche Umsetzung kann zu Problemen wie unerwarteten Ausführungen oder nicht ausgeführten Aufgaben führen. Daher ist es wichtig, die Konfigurationen korrekt vorzunehmen.

Voraussetzungen

  • Linux-Distribution: Ubuntu 20.04 LTS (oder eine neuere Version). Überprüfen Sie Ihre Version mit lsb_release -a.
  • Berechtigungen: Root-Rechte sind erforderlich für einige Schritte. Öffnen Sie das Terminal und führen Sie sudo su aus, um root-Berechtigungen zu erhalten.
  • Eingabeaufforderung: Öffnen Sie ein Terminal-Fenster (z.B. unter Ubuntu über die Tastenkombination Win + T).

Schritt-für-Schritt-Anleitung

Schritt 1: Einrichten eines einfachen systemd-Dienstes

Um einen Dienst zu erstellen, müssen Sie eine systemd-Unit-Datei erstellen. Diese Datei definiert die Konfiguration des Dienstes.

  1. Erstellen Sie eine neue Unit-Datei mit dem Namen myservice.service in /etc/systemd/system/. Verwenden Sie einen Texteditor wie nano:
    Linux-Terminal (Bash)
    sudo nano /etc/systemd/system/myservice.service
  2. Fügen Sie die folgende Konfiguration ein:
    Beispiel / Konfiguration
    [Unit]
    Description=My Custom Service
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/mycommand
    Restart=always
    User=root
    
    [Install]
    WantedBy=multi-user.target
  3. Speichern Sie die Datei und beenden Sie den Editor (Strg + O, Enter, Strg + X).

So prüfen Sie, ob es geklappt hat: Überprüfen Sie mit systemctl status myservice.service, dass der Dienst geladen wurde.

Schritt 2: Aktivieren und Starten des Dienstes

Nachdem die Unit-Datei erstellt wurde, müssen Sie den Dienst aktivieren und starten.

  1. Aktivieren Sie den Dienst mit:
    Linux-Terminal (Bash)
    sudo systemctl enable myservice.service
  2. Starten Sie den Dienst:
    Linux-Terminal (Bash)
    sudo systemctl start myservice.service

So prüfen Sie, ob es geklappt hat: Überprüfen Sie den Status des Dienstes mit systemctl status myservice.service.

Schritt 3: Erstellen eines Cron-Jobs für regelmäßige Aufgaben

Cron ermöglicht die Planung von wiederkehrenden Aufgaben.

  1. Öffnen Sie den Crontab-Editor:
    Linux-Terminal (Bash)
    crontab -e
  2. Fügen Sie eine neue Zeile ein, um einen Job zu planen. Zum Beispiel, um jeden Tag um 3 Uhr morgens ein Skript auszuführen:
    Beispiel / Konfiguration
    0 3 * * * /path/to/script.sh
  3. Speichern und beenden Sie den Editor (Strg + O, Enter, Strg + X).

So prüfen Sie, ob es geklappt hat: Überprüfen Sie die Cron-Jobs mit crontab -l.

Schritt 4: Erstellen eines Systemd-Timers für regelmäßige Aufgaben

Systemd-Timer bieten eine Alternative zu Cron und können flexibler sein.

  1. Erstellen Sie einen Timer-Unit-Datei:
    Linux-Terminal (Bash)
    sudo nano /etc/systemd/system/mytimer.timer
  2. Fügen Sie die folgende Konfiguration ein:
    Beispiel / Konfiguration
    [Unit]
    Description=Run My Service Every Day
    
    [Timer]
    OnCalendar=daily
    Persistent=true
    
    [Install]
    WantedBy=timers.target
  3. Speichern und beenden Sie den Editor (Strg + O, Enter, Strg + X).
  4. Aktivieren Sie den Timer:
    Linux-Terminal (Bash)
    sudo systemctl enable mytimer.timer
  5. Starten Sie den Timer:
    Linux-Terminal (Bash)
    sudo systemctl start mytimer.timer

So prüfen Sie, ob es geklappt hat: Überprüfen Sie den Status des Timers mit systemctl status mytimer.timer.

Schritt 5: Protokollieren der Ausgaben von Cron-Jobs und Systemd-Timers

Es ist wichtig, die Ausgabe von Jobs zu protokollieren, um Probleme zu erkennen.

  1. Für Cron-Jobs können Sie die Ausgabe in eine Datei weiterleiten:
    Beispiel / Konfiguration
    0 3 * * * /path/to/script.sh >> /var/log/myscript.log 2>&1
  2. Für Systemd-Timers verwenden Sie das Journalctl:
    Linux-Terminal (Bash)
    journalctl -u myservice.service

So prüfen Sie, ob es geklappt hat: Überprüfen Sie die Log-Datei oder den Journal für Ausgaben.

Schritt 6: Debuggen von Diensten und Jobs

Fehler können passieren. Hier sind einige Schritte zum Debugging:

  1. Überprüfen Sie den Status eines Dienstes mit:
    Linux-Terminal (Bash)
    systemctl status myservice.service
  2. Für Cron-Jobs überprüfen Sie die Log-Dateien oder den Systemlog.

Dieser Schritt ist geschafft – weiter geht’s.

Die wichtigsten Befehle im Überblick

Befehl Wirkung Hinweis
systemctl enable myservice.service Aktiviert einen Dienst, sodass er bei jedem Systemstart gestartet wird. Benötigt root-Rechte.
crontab -e Öffnet den Crontab-Editor für die Definition von Jobs. Bearbeiten Sie nur Ihre eigenen Cron-Jobs.
systemctl start myservice.service Startet einen Dienst manuell. Nutzen Sie sudo, wenn root-Rechte erforderlich sind.
crontab -l Listet die aktiven Cron-Jobs auf. Diese Befehle werden als Benutzer ausgeführt, der den Crontab verwendet.
systemctl status myservice.service Gibt den Status eines Dienstes aus. Nutzen Sie diesen Befehl zum Debugging.
journalctl -u myservice.service Darstellt die Protokolldateien für einen bestimmten Dienst. Einfach zu verwenden und bietet detaillierte Informationen.
sudo systemctl enable mytimer.timer Aktiviert einen Timer, sodass er regelmäßig ausgeführt wird. Nutzen Sie sudo, wenn root-Rechte erforderlich sind.
systemctl start mytimer.timer Startet einen Timer manuell. Dies ist nützlich, um die Konfiguration zu testen.

Häufige Fehler und ihre Lösung

Fehlermeldung: „Failed to start myservice.service“

Ursache: Der Dienst kann nicht gestartet werden, weil der Befehl in ExecStart fehlerhaft ist oder nicht existiert.
Lösung: Überprüfen Sie die Unit-Datei und korrigieren Sie den Pfad zum auszuführenden Programm. Zum Beispiel:

Linux-Terminal (Bash)
sudo nano /etc/systemd/system/myservice.service
<h1>Fügen Sie den korrekten Befehl ein.</h1>

Fehlermeldung: „No crontab for user“

Ursache: Der Benutzer hat keinen Crontab.
Lösung: Erstellen Sie einen neuen Crontab:

Linux-Terminal (Bash)
crontab -e
<h1>Fügen Sie die gewünschten Jobs ein.</h1>

Fehlermeldung: „Failed to execute /path/to/script.sh“

Ursache: Das Skript existiert nicht oder hat keine ausführbaren Rechte.
Lösung: Überprüfen Sie den Pfad und setzen Sie die ausführbaren Rechte:

Linux-Terminal (Bash)
chmod +x /path/to/script.sh

Fehlermeldung: „Job for mytimer.timer failed because a timeout was exceeded.“

Ursache: Der Timer kann nicht gestartet werden, weil der Dienst fehlerhaft ist.
Lösung: Überprüfen Sie die Unit-Datei des Timers und stellen Sie sicher, dass alles korrekt konfiguriert ist:

Linux-Terminal (Bash)
sudo nano /etc/systemd/system/mytimer.timer
<h1>Korrigieren Sie die Konfiguration.</h1>

Änderungen rückgängig machen

Um Änderungen wieder zu sperren, können Sie folgende Schritte ausführen:

  1. Rückgängig machen eines Dienstes:
    Linux-Terminal (Bash)
    sudo systemctl disable myservice.service
    sudo rm /etc/systemd/system/myservice.service
  2. Rückgängig machen eines Timers:
    Linux-Terminal (Bash)
    sudo systemctl disable mytimer.timer
    sudo rm /etc/systemd/system/mytimer.timer
  3. Löschen eines Cron-Jobs:
    Linux-Terminal (Bash)
    crontab -e
    <h1>Entfernen Sie den entsprechenden Eintrag.</h1>

Quellen und weiterführende Informationen

Hinweis: Dieser Beitrag wurde am 16.10.2026 mit KI-Unterstützung erstellt, auf Basis der genannten Quellen eigenständig formuliert und redaktionell von IT-Tribus betreut. Alle Angaben ohne Gewähr – bitte prüfen Sie Befehle vor dem Einsatz in produktiven Umgebungen und legen Sie vorher eine Sicherung an.

Benötigen Sie Unterstützung bei Linux automatisieren?

IT-Tribus ist Ihr IT-Dienstleister aus Nideggen. Vor Ort helfen wir in Düren, im Kreis Düren und in der Region Aachen – Monitoring und Fernwartung mit NinjaOne bieten wir Unternehmen auch überregional an.

Kostenlose Erstanalyse anfordern
📞 02427 9099860