Bisher hast du gelernt, wie man vorhandene Dienste mit systemctl steuert.
Doch systemd kann noch mehr: Du kannst eigene Services definieren.
So lassen sich Skripte, Programme oder sogar einfache Befehle automatisch starten und überwachen.

🔹 Was ist eine Service-Unit?

&nbsp
Eine Service-Unit ist eine Konfigurationsdatei, die beschreibt, wie systemd einen Dienst starten und verwalten soll.

  • Sie endet immer auf .service.
  • Sie enthält Abschnitte mit Einstellungen.

Beispiel: /etc/systemd/system/mein_dienst.service

[Unit]
Description=Mein erster systemd Service
After=network.target

[Service]
ExecStart=/usr/bin/python3 /home/user/scripts/test.py
Restart=always

[Install]
WantedBy=multi-user.target

🔹 Aufbau einer Service-Datei

[Unit]

Allgemeine Infos, Abhängigkeiten.

  • Description= → Kurzbeschreibung
  • After= → Service startet erst nach diesem Target/Dienst

[Service]

Einstellungen für den eigentlichen Dienst.

  • ExecStart= → Befehl oder Skript, das gestartet wird
  • Restart= → Verhalten bei Fehlern (always, on-failure, no)
  • User= → Benutzer, unter dem der Service läuft (optional)

[Install]

Festlegen, wie der Service eingebunden wird.

  • WantedBy= → Ziel-Target, bei dem der Service geladen wird
  • Typisch: multi-user.target

🔹 Service aktivieren & starten

  1. Datei erstellen:
    sudo nano /etc/systemd/system/mein_dienst.service
  2. Konfiguration einfügen (siehe Beispiel).
  3. Service neu laden:
    sudo systemctl daemon-reload
  4. Service starten:
    sudo systemctl start mein_dienst
  5. Service beim Boot aktivieren:
    sudo systemctl enable mein_dienst

👉 Jetzt läuft dein eigener Service wie jeder andere systemd-Dienst.

🔹 Logs und Kontrolle

  • Status prüfen:
    systemctl status mein_dienst
  • Logs einsehen:
    journalctl -u mein_dienst

👉 So kannst du Fehler sofort erkennen.

🔹 Beispiel: Eigener Reminder-Service

Ein kleines Skript, das jede Minute eine Nachricht ins Log schreibt:

#!/bin/bash
echo "Hallo, es ist $(date)" >> /home/user/reminder.log

Service-Unit:

[Unit]
Description=Reminder Service
After=network.target

[Service]
ExecStart=/bin/bash /home/user/reminder.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

👉 Dieser Service läuft dauerhaft und schreibt regelmäßig ins Log.

🔹 Übung

  1. Erstelle ein Skript, das das aktuelle Datum in /home/user/datum.log schreibt.
  2. Definiere eine Service-Unit, die dein Skript startet.
  3. Lade systemd neu und starte deinen Dienst.
  4. Prüfe mit journalctl -u, ob dein Dienst korrekt läuft.
  5. Aktiviere ihn für den Systemstart.

✅ Zusammenfassung

  • Eigene Services erstellst du mit Service-Unit-Dateien (.service).
  • Wichtig: Abschnitte [Unit], [Service] und [Install].
  • Mit ExecStart bestimmst du, was gestartet wird.
  • Mit systemctl daemon-reload, start, enable machst du den Service aktiv.
  • Logs und Status helfen dir bei der Kontrolle.

👉 Im nächsten Kapitel lernst du systemd-Timer kennen – die moderne Alternative zu Cronjobs, perfekt kombinierbar mit deinen eigenen Services.

📚 Inhaltsverzeichnis

👉 systemd Kapitel 1: Grundlagen – Was ist systemd und wie arbeitet es?
👉 systemd Kapitel 2: Dienste steuern mit systemctl
👉 systemd Kapitel 3: Logs und Fehlersuche mit journalctl
👉 systemd Kapitel 4: Bootprozess & Targets verstehen
👉 systemd Kapitel 5: Eigene Services erstellen
👉 systemd Kapitel 6: Timer als moderne Cron-Alternative
👉 systemd Kapitel 7: Abschlussprojekt – Eigene Services & Timer kombinieren