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?
 
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=→ KurzbeschreibungAfter=→ Service startet erst nach diesem Target/Dienst
[Service]
Einstellungen für den eigentlichen Dienst.
ExecStart=→ Befehl oder Skript, das gestartet wirdRestart=→ 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
- Datei erstellen:
sudo nano /etc/systemd/system/mein_dienst.service
- Konfiguration einfügen (siehe Beispiel).
- Service neu laden:
sudo systemctl daemon-reload
- Service starten:
sudo systemctl start mein_dienst
- 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
- Erstelle ein Skript, das das aktuelle Datum in
/home/user/datum.logschreibt. - Definiere eine Service-Unit, die dein Skript startet.
- Lade systemd neu und starte deinen Dienst.
- Prüfe mit
journalctl -u, ob dein Dienst korrekt läuft. - Aktiviere ihn für den Systemstart.
✅ Zusammenfassung
- Eigene Services erstellst du mit Service-Unit-Dateien (
.service). - Wichtig: Abschnitte
[Unit],[Service]und[Install]. - Mit
ExecStartbestimmst du, was gestartet wird. - Mit
systemctl daemon-reload,start,enablemachst 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
