# 5.1 Prozesse, Dienste und systemd

Linux führt Programme als Prozesse aus.

Ein Prozess ist ein laufendes Programm.
Ein Dienst ist ein Programm,
das meist im Hintergrund läuft
und eine bestimmte Aufgabe für das System oder Netzwerk bereitstellt.

Für Fachinformatiker Systemintegration ist dieses Thema wichtig,
weil Serverdienste wie SSH,
Webserver,
Datenbanken,
DNS,
DHCP,
Backupdienste
oder Monitoring-Agenten auf Linux-Systemen als Prozesse und Dienste laufen.

Merksatz:

    Prozess = laufendes Programm.
    Dienst = Hintergrundprogramm mit Aufgabe.

---

**Lernziele**

Nach dieser Seite solltest du erklären können:

    - was ein Prozess ist
    - was eine PID ist
    - was ein Dienst ist
    - was ein Daemon ist
    - wie man Prozesse anzeigt
    - wie man Prozesse beendet
    - wie man Systemressourcen prüft
    - wie Dienste mit systemd verwaltet werden
    - was systemctl macht
    - was enable und disable bedeuten
    - wie man typische Dienstfehler eingrenzt

---

**Grundidee**

Wenn unter Linux ein Programm gestartet wird,
entsteht daraus ein Prozess.

Beispiele:

    - Shell
    - Texteditor
    - Webserver
    - Datenbankserver
    - Backupskript
    - SSH-Server
    - Cronjob
    - Monitoring-Agent

Jeder Prozess verbraucht Ressourcen,
zum Beispiel:

    - CPU
    - Arbeitsspeicher
    - Dateizugriffe
    - Netzwerkverbindungen
    - Prozess-IDs
    - offene Dateien

Merksatz:

    Alles,
    was läuft,
    ist als Prozess im System sichtbar.

---

**Prozess**

Ein Prozess ist eine laufende Instanz eines Programms.

Beispiel:

    Das Programm nginx ist installiert.

    Wenn nginx gestartet wird,
    laufen ein oder mehrere nginx-Prozesse.

Ein Programm kann mehrfach als Prozess laufen.

Beispiele:

    mehrere Shells

    mehrere Webserver-Worker

    mehrere Datenbankprozesse

    mehrere SSH-Sitzungen

Merksatz:

    Programm = Datei auf dem System.
    Prozess = laufendes Programm.

---

**PID**

PID steht für:

    Process ID

Die PID ist eine eindeutige Nummer eines laufenden Prozesses.

Beispiel:

    PID 1234

Mit der PID kann ein Prozess gezielt angesprochen werden,
zum Beispiel zum Beenden oder Prüfen.

Merksatz:

    PID = eindeutige Nummer eines Prozesses.

---

**PPID**

PPID steht für:

    Parent Process ID

Das ist die Prozess-ID des Elternprozesses.

Viele Prozesse werden von anderen Prozessen gestartet.

Beispiel:

    Eine Shell startet ein Skript.

    Die Shell ist der Elternprozess.

    Das Skript ist der Kindprozess.

Merksatz:

    Prozesse können Eltern-
    und Kindprozesse haben.

---

**Prozesse anzeigen mit ps**

Der Befehl ps zeigt Prozesse an.

Beispiele:

    ps

    ps aux

    ps -ef

Bedeutung:

| Befehl | Bedeutung |
|---|---|
| ps | Prozesse der aktuellen Shell anzeigen |
| ps aux | viele Prozesse systemweit anzeigen |
| ps -ef | Prozesse in anderem verbreiteten Format anzeigen |

Typische Spalten:

| Spalte | Bedeutung |
|---|---|
| USER | Benutzer, unter dem der Prozess läuft |
| PID | Prozess-ID |
| %CPU | CPU-Nutzung |
| %MEM | Speicheranteil |
| COMMAND | gestarteter Befehl |
| PPID | Elternprozess-ID |

Merksatz:

    ps zeigt laufende Prozesse.

---

**Prozesse suchen**

Prozesse kann man mit ps und grep suchen.

Beispiel:

    ps aux | grep nginx

Bedeutung:

    ps aux zeigt Prozesse.

    grep nginx filtert nach nginx.

Alternative Befehle:

    pgrep nginx

    pidof nginx

Bedeutung:

| Befehl | Bedeutung |
|---|---|
| pgrep nginx | sucht Prozess-IDs nach Namen |
| pidof nginx | zeigt PID eines laufenden Programms |

Merksatz:

    ps zeigt,
    grep filtert.

---

**Prozesse live überwachen mit top**

top zeigt laufende Prozesse und Systemauslastung live an.

Starten:

    top

Typische Informationen:

    CPU-Auslastung

    RAM-Nutzung

    laufende Prozesse

    Load Average

    Prozessliste

    Benutzer

    Prozess-IDs

Beenden:

    q

Merksatz:

    top zeigt Systemlast live.

---

**htop**

htop ist eine komfortablere Alternative zu top.

Starten:

    htop

Vorteile:

    übersichtlicher

    farbliche Anzeige

    einfachere Prozessauswahl

    leichteres Beenden von Prozessen

Wichtig:

    htop ist nicht immer standardmäßig installiert.

Merksatz:

    htop ist ein komfortabler Prozessmonitor,
    falls installiert.

---

**CPU,
RAM
und Load Average**

Bei Prozessproblemen sind drei Werte besonders wichtig:

| Wert | Bedeutung |
|---|---|
| CPU | Rechenleistung |
| RAM | Arbeitsspeicher |
| Load Average | durchschnittliche Systemlast |

Hohe CPU-Auslastung kann bedeuten:

    Prozess rechnet stark

    Endlosschleife

    hohe Nutzerlast

    Angriff oder Fehlkonfiguration

Hohe RAM-Nutzung kann bedeuten:

    Dienst benötigt viel Speicher

    Speicherleck

    zu viele Prozesse

    falsche Konfiguration

Merksatz:

    Langsame Systeme immer mit Messwerten prüfen.

---

**Load Average einfach erklärt**

Load Average zeigt,
wie viele Prozesse im Durchschnitt auf CPU oder I/O warten.

Typische Anzeige:

    load average: 0.50, 1.20, 2.10

Die drei Werte stehen für:

    letzte 1 Minute

    letzte 5 Minuten

    letzte 15 Minuten

Ein hoher Wert kann auf Überlastung hindeuten.

Wichtig:

    Bewertung hängt von der Anzahl der CPU-Kerne ab.

Merksatz:

    Load Average zeigt durchschnittliche Systemlast.

---

**Prozesse beenden mit kill**

Mit kill sendet man ein Signal an einen Prozess.

Beispiel:

    kill 1234

Das sendet standardmäßig ein TERM-Signal.

TERM bedeutet:

    Prozess soll sauber beendet werden.

Wenn das nicht funktioniert:

    kill -9 1234

Das sendet ein KILL-Signal.

Wichtig:

    kill -9 beendet hart
    und sollte nur verwendet werden,
    wenn normales Beenden nicht funktioniert.

Merksatz:

    Erst normal beenden,
    dann nur notfalls kill -9.

---

**Wichtige Signale**

| Signal | Nummer | Bedeutung |
|---|---:|---|
| TERM | 15 | sauber beenden |
| KILL | 9 | sofort hart beenden |
| HUP | 1 | häufig Konfiguration neu laden |
| INT | 2 | Unterbrechung, ähnlich Strg+C |

Beispiele:

    kill -15 1234

    kill -9 1234

    kill -HUP 1234

Merksatz:

    TERM bittet um Beenden.
    KILL erzwingt Beenden.

---

**Prozess mit Namen beenden**

Mit pkill kann man Prozesse anhand des Namens beenden.

Beispiel:

    pkill nginx

Wichtig:

    Vorsichtig verwenden,
    weil mehrere Prozesse betroffen sein können.

Besser vorher prüfen:

    pgrep -a nginx

Merksatz:

    pkill beendet nach Namen,
    deshalb vorher genau prüfen.

---

**Prozesse im Vordergrund und Hintergrund**

Ein Prozess kann im Vordergrund oder Hintergrund laufen.

Vordergrund:

    blockiert die aktuelle Shell,
    bis er beendet ist.

Hintergrund:

    läuft weiter,
    während man die Shell weiter nutzen kann.

Befehl im Hintergrund starten:

    befehl &

Beispiel:

    sleep 60 &

Jobs anzeigen:

    jobs

Merksatz:

    & startet einen Befehl im Hintergrund.

---

**Strg+C und Strg+Z**

Wichtige Tastenkombinationen:

| Tastenkombination | Bedeutung |
|---|---|
| Strg+C | laufenden Vordergrundprozess abbrechen |
| Strg+Z | Prozess anhalten |
| fg | angehaltenen Job in Vordergrund holen |
| bg | angehaltenen Job im Hintergrund fortsetzen |

Merksatz:

    Strg+C beendet meist.
    Strg+Z hält an.

---

**Daemon**

Ein Daemon ist ein Hintergrundprozess,
der dauerhaft oder bei Bedarf eine Systemaufgabe erfüllt.

Typische Daemons:

    sshd

    cron

    nginx

    mysqld

    systemd

    rsyslogd

Viele Daemon-Namen enden auf:

    d

Beispiele:

    sshd = SSH-Daemon

    cron oder crond = Cron-Daemon

Merksatz:

    Daemon = Hintergrunddienst.

---

**Dienst**

Ein Dienst ist eine Systemfunktion,
die meist im Hintergrund bereitgestellt wird.

Beispiele:

| Dienst | Zweck |
|---|---|
| ssh | Fernadministration |
| nginx | Webserver |
| apache2 | Webserver |
| mariadb | Datenbank |
| postgresql | Datenbank |
| cron | zeitgesteuerte Aufgaben |
| systemd-journald | Logging |
| docker | Containerdienst |

Merksatz:

    Dienste stellen Funktionen bereit.

---

**systemd**

systemd ist auf vielen modernen Linux-Distributionen das zentrale Init-
und Dienstverwaltungssystem.

systemd ist zuständig für:

    - Systemstart
    - Dienste
    - Abhängigkeiten
    - Units
    - Logging-Anbindung
    - Timer
    - Mounts
    - Targets
    - Systemzustände

Wichtig:

    Nicht jede Linux-Distribution nutzt systemd.
    Viele Serverdistributionen tun es aber.

Merksatz:

    systemd verwaltet auf vielen Linux-Systemen Dienste und Systemstart.

---

**Unit**

Eine Unit ist eine Verwaltungseinheit von systemd.

Typische Unit-Arten:

| Unit-Art | Bedeutung |
|---|---|
| .service | Dienst |
| .socket | Socket-Aktivierung |
| .timer | zeitgesteuerte Aufgabe |
| .mount | Mountpoint |
| .target | Zielzustand des Systems |

Beispiel:

    ssh.service

    nginx.service

    docker.service

Merksatz:

    .service steht für einen Dienst.

---

**systemctl**

systemctl ist das wichtigste Werkzeug zur Verwaltung von systemd.

Typische Befehle:

    systemctl status ssh

    systemctl start ssh

    systemctl stop ssh

    systemctl restart ssh

    systemctl reload ssh

    systemctl enable ssh

    systemctl disable ssh

Merksatz:

    systemctl verwaltet systemd-Units.

---

**Dienststatus prüfen**

Status eines Dienstes prüfen:

    systemctl status ssh

Typische Informationen:

    Dienstname

    aktiv oder inaktiv

    Fehlerstatus

    PID

    Startzeit

    letzte Logzeilen

    Pfad zur Unit-Datei

Wichtige Zustände:

| Zustand | Bedeutung |
|---|---|
| active | Dienst läuft |
| inactive | Dienst läuft nicht |
| failed | Dienst ist fehlgeschlagen |
| enabled | startet automatisch beim Boot |
| disabled | startet nicht automatisch beim Boot |

Merksatz:

    systemctl status ist die erste Prüfung bei Dienstproblemen.

---

**Dienst starten**

Dienst starten:

    systemctl start ssh

Bedeutung:

    Der Dienst wird jetzt gestartet.

Wichtig:

    start bedeutet nicht automatisch,
    dass der Dienst beim nächsten Neustart wieder startet.

Merksatz:

    start startet jetzt.

---

**Dienst stoppen**

Dienst stoppen:

    systemctl stop ssh

Bedeutung:

    Der Dienst wird jetzt gestoppt.

Wichtig:

    stop deaktiviert nicht automatisch den Autostart.

Merksatz:

    stop stoppt jetzt.

---

**Dienst neu starten**

Dienst neu starten:

    systemctl restart ssh

Bedeutung:

    Der Dienst wird gestoppt und neu gestartet.

Typische Nutzung:

    nach Konfigurationsänderungen

    nach Fehlern

    nach Updates

Wichtig:

    Bei SSH vorsichtig sein,
    besonders wenn man gerade per SSH verbunden ist.

Merksatz:

    restart startet Dienst komplett neu.

---

**Dienst neu laden**

Dienst neu laden:

    systemctl reload nginx

Bedeutung:

    Der Dienst lädt seine Konfiguration neu,
    ohne vollständig beendet zu werden.

Nicht jeder Dienst unterstützt reload.

Unterschied:

| Befehl | Bedeutung |
|---|---|
| restart | Dienst komplett neu starten |
| reload | Konfiguration neu laden, falls unterstützt |

Merksatz:

    reload ist oft schonender als restart,
    wenn der Dienst es unterstützt.

---

**Autostart aktivieren**

Dienst beim Systemstart automatisch starten:

    systemctl enable ssh

Wichtig:

    enable startet den Dienst nicht unbedingt sofort.

Dafür braucht man:

    systemctl start ssh

Oder kombiniert:

    systemctl enable --now ssh

Merksatz:

    enable aktiviert Autostart.

---

**Autostart deaktivieren**

Autostart deaktivieren:

    systemctl disable ssh

Wichtig:

    disable stoppt den aktuell laufenden Dienst nicht unbedingt sofort.

Dafür braucht man:

    systemctl stop ssh

Merksatz:

    disable entfernt Autostart.

---

**enable,
disable,
start
und stop unterscheiden**

| Befehl | Wirkung |
|---|---|
| start | startet Dienst jetzt |
| stop | stoppt Dienst jetzt |
| enable | startet Dienst künftig automatisch beim Boot |
| disable | startet Dienst künftig nicht automatisch beim Boot |
| restart | stoppt und startet Dienst jetzt neu |
| reload | lädt Konfiguration neu, falls unterstützt |

Merksatz:

    start und stop gelten jetzt.
    enable und disable gelten für den Systemstart.

---

**Dienst prüfen nach Änderung**

Nach Änderung an einem Dienst:

    systemctl restart dienstname

    systemctl status dienstname

    journalctl -u dienstname

Typisches Vorgehen:

    1. Konfiguration ändern

    2. Syntax prüfen,
       falls möglich

    3. Dienst neu laden oder neu starten

    4. Status prüfen

    5. Logs prüfen

Merksatz:

    Nach Dienständerung immer Status und Logs prüfen.

---

**journalctl für Dienste**

Logs eines Dienstes anzeigen:

    journalctl -u ssh

Live mitlesen:

    journalctl -u ssh -f

Seit letztem Boot:

    journalctl -u ssh -b

Nur letzte Einträge:

    journalctl -u ssh -n 50

Merksatz:

    journalctl -u zeigt Logs einer Unit.

---

**Dienst läuft,
aber Port ist nicht erreichbar**

Mögliche Ursachen:

    Dienst lauscht nicht auf erwarteter Adresse

    Dienst lauscht auf anderem Port

    lokale Firewall blockiert

    Netzwerkfirewall blockiert

    Dienst ist nur lokal gebunden

    falsche Konfiguration

    IPv4/IPv6-Verwechslung

Prüfen:

    systemctl status dienst

    ss -tulpen

    journalctl -u dienst

    Firewall-Regeln

Merksatz:

    Dienst läuft heißt nicht automatisch:
    Port ist erreichbar.

---

**Offene Ports anzeigen**

Mit ss kann man offene Ports und Verbindungen anzeigen.

Beispiele:

    ss -tulpen

    ss -tulpn

Bedeutung der Optionen:

| Option | Bedeutung |
|---|---|
| -t | TCP |
| -u | UDP |
| -l | listening |
| -p | Prozess anzeigen |
| -e | erweiterte Informationen |
| -n | numerische Anzeige |

Merksatz:

    ss zeigt,
    welche Dienste auf welchen Ports lauschen.

---

**Dienst lauscht nur auf localhost**

Wenn ein Dienst nur auf 127.0.0.1 lauscht,
ist er nur lokal erreichbar.

Beispiel:

    127.0.0.1:8080

Bedeutung:

    Nur Programme auf demselben System können direkt darauf zugreifen.

Wenn ein Dienst auf allen IPv4-Schnittstellen lauscht:

    0.0.0.0:8080

Bedeutung:

    Dienst lauscht auf allen IPv4-Interfaces.

Merksatz:

    127.0.0.1 = nur lokal.
    0.0.0.0 = alle IPv4-Interfaces.

---

**Dienst startet nicht**

Wenn ein Dienst nicht startet,
sollte man prüfen:

    systemctl status dienst

    journalctl -u dienst

    Konfigurationsdatei

    Syntaxprüfung

    Ports bereits belegt?

    Rechte auf Dateien

    Abhängigkeiten

    Speicherplatz

    Benutzer des Dienstes

    Pfade

    Zertifikate

Merksatz:

    Dienstfehler immer mit Status und Logs eingrenzen.

---

**Port bereits belegt**

Ein Dienst kann nicht starten,
wenn ein anderer Prozess denselben Port bereits nutzt.

Beispiel:

    nginx soll TCP 80 nutzen,
    aber Apache läuft bereits auf TCP 80.

Prüfen:

    ss -tulpen

Lösung:

    einen Dienst stoppen

    Port ändern

    Konfiguration anpassen

Merksatz:

    Ein Port kann pro IP und Protokoll nur passend gebunden werden.

---

**Dienst hat Rechteproblem**

Ein Dienst läuft oft unter einem eigenen Benutzer.

Beispiel:

    www-data

    nginx

    postgres

Wenn dieser Benutzer keine Rechte auf Dateien oder Verzeichnisse hat,
kann der Dienst fehlschlagen.

Prüfen:

    systemctl status dienst

    journalctl -u dienst

    ls -l datei

    ls -ld verzeichnis

Merksatz:

    Dienstprobleme können Rechteprobleme sein.

---

**Dienst hat Konfigurationsfehler**

Viele Dienste starten nicht,
wenn die Konfiguration fehlerhaft ist.

Beispiele:

    falsche Syntax

    falscher Pfad

    falscher Port

    Zertifikat fehlt

    Benutzer existiert nicht

    ungültige Option

Viele Dienste bieten Syntaxprüfungen.

Beispiele:

    nginx -t

    apachectl configtest

Wichtig:

    Vor restart möglichst Syntax prüfen,
    wenn der Dienst das unterstützt.

Merksatz:

    Konfiguration prüfen,
    bevor man produktive Dienste neu startet.

---

**Abhängigkeiten**

Dienste können voneinander abhängig sein.

Beispiele:

    Webanwendung braucht Datenbank.

    Backupdienst braucht Netzwerkshare.

    Monitoring braucht Netzwerk.

    Containerdienst braucht Storage.

Wenn eine Abhängigkeit fehlt,
startet der Dienst eventuell nicht korrekt
oder funktioniert nur teilweise.

Merksatz:

    Dienste funktionieren oft nur mit ihren Abhängigkeiten.

---

**Dienste beim Boot**

Beim Systemstart werden Dienste automatisch gestartet,
wenn sie aktiviert sind.

Prüfen,
ob ein Dienst aktiviert ist:

    systemctl is-enabled ssh

Prüfen,
ob ein Dienst läuft:

    systemctl is-active ssh

Merksatz:

    enabled heißt Autostart.
    active heißt läuft gerade.

---

**Targets**

Targets sind systemd-Zielzustände.

Beispiele:

| Target | Bedeutung |
|---|---|
| multi-user.target | Mehrbenutzerbetrieb ohne grafische Oberfläche |
| graphical.target | Mehrbenutzerbetrieb mit grafischer Oberfläche |
| rescue.target | Rettungsmodus |
| emergency.target | Minimaler Notfallmodus |

Merksatz:

    Targets beschreiben Systemzustände.

---

**Cron und systemd Timer**

Zeitgesteuerte Aufgaben können unter Linux über cron oder systemd Timer laufen.

cron:

    klassischer Zeitplaner

systemd Timer:

    systemd-eigene zeitgesteuerte Units

Beispiele für Aufgaben:

    Backup starten

    Logs aufräumen

    Updates prüfen

    Skript regelmäßig ausführen

Merksatz:

    Wiederkehrende Aufgaben laufen oft über cron oder systemd Timer.

---

**Typische Prozessbefehle**

| Befehl | Zweck |
|---|---|
| ps | Prozesse anzeigen |
| ps aux | viele Prozesse anzeigen |
| pgrep | Prozesse nach Namen suchen |
| pidof | PID eines Programms anzeigen |
| top | Prozesse live überwachen |
| htop | komfortabler Prozessmonitor |
| kill | Signal an Prozess senden |
| pkill | Prozess nach Namen beenden |
| jobs | Hintergrundjobs anzeigen |
| fg | Job in Vordergrund holen |
| bg | Job im Hintergrund fortsetzen |

---

**Typische Dienstbefehle**

| Befehl | Zweck |
|---|---|
| systemctl status dienst | Dienststatus prüfen |
| systemctl start dienst | Dienst jetzt starten |
| systemctl stop dienst | Dienst jetzt stoppen |
| systemctl restart dienst | Dienst neu starten |
| systemctl reload dienst | Konfiguration neu laden |
| systemctl enable dienst | Autostart aktivieren |
| systemctl disable dienst | Autostart deaktivieren |
| systemctl enable --now dienst | Autostart aktivieren und sofort starten |
| systemctl is-active dienst | prüfen, ob Dienst läuft |
| systemctl is-enabled dienst | prüfen, ob Autostart aktiv ist |
| journalctl -u dienst | Dienstlogs anzeigen |

---

**Typische Fehlerbilder**

| Fehlerbild | Wahrscheinliche Ursache |
|---|---|
| Dienst ist inactive | Dienst läuft nicht |
| Dienst ist failed | Startfehler oder Absturz |
| Dienst startet nicht | Konfiguration, Rechte, Port, Abhängigkeit |
| Dienst läuft, aber nicht erreichbar | Firewall, Port, Bind-Adresse, Netzwerk |
| Port bereits belegt | anderer Prozess nutzt denselben Port |
| Dienst nach Boot nicht gestartet | Autostart nicht enabled |
| Dienst kann Datei nicht lesen | Rechteproblem |
| Dienst findet Datei nicht | falscher Pfad |
| Dienst bricht nach Änderung ab | Konfigurationsfehler |
| System langsam | CPU, RAM, I/O oder Prozesslast prüfen |

---

**Sichere Arbeitsweise bei Dienständerungen**

Vor Änderung:

    aktuelle Konfiguration sichern

    Dokumentation prüfen

    Wartungsfenster beachten

    aktive Verbindung berücksichtigen

Während Änderung:

    Syntax prüfen,
    falls möglich

    Dienst reload statt restart nutzen,
    wenn ausreichend

Nach Änderung:

    systemctl status prüfen

    journalctl -u prüfen

    Funktion testen

    Rollback bereithalten

Merksatz:

    Dienständerungen immer prüfbar und rückgängig planbar machen.

---

**Typische Prüfungsfragen**

| Frage | Kurzantwort |
|---|---|
| Was ist ein Prozess? | laufendes Programm |
| Was ist eine PID? | eindeutige Prozess-ID |
| Was ist ein Dienst? | Hintergrundprogramm mit Aufgabe |
| Was ist ein Daemon? | Hintergrundprozess |
| Was macht ps? | Prozesse anzeigen |
| Was macht top? | Prozesse live überwachen |
| Was macht kill? | Signal an Prozess senden |
| Was macht systemctl? | systemd-Units verwalten |
| Was bedeutet active? | Dienst läuft |
| Was bedeutet inactive? | Dienst läuft nicht |
| Was bedeutet failed? | Dienst ist fehlgeschlagen |
| Was bedeutet enabled? | Autostart aktiv |
| Was bedeutet disabled? | Autostart nicht aktiv |
| Was macht journalctl -u? | Logs einer Unit anzeigen |

---

**Typische Prüfungsfallen**

| Falle | Richtig denken |
|---|---|
| Programm und Prozess gleichsetzen | Programm ist Datei, Prozess läuft |
| kill immer als hartes Beenden verstehen | kill sendet Signale, Standard ist TERM |
| kill -9 sofort verwenden | erst sauber beenden |
| Dienst läuft = erreichbar | Firewall, Port und Bind-Adresse prüfen |
| enable mit start verwechseln | enable ist Autostart, start ist jetzt |
| disable mit stop verwechseln | disable entfernt Autostart, stop stoppt jetzt |
| Logs nicht prüfen | journalctl -u ist zentral |
| reload und restart gleichsetzen | reload lädt Konfiguration, restart startet neu |
| SSH unvorsichtig neu starten | Remote-Zugriff kann abbrechen |
| Portproblem nur am Dienst suchen | auch Firewall und Bind-Adresse prüfen |

---

**IHK-sichere Kurzformulierung**

Ein Prozess ist eine laufende Instanz eines Programms und besitzt eine eindeutige Prozess-ID, die PID. Dienste sind Hintergrundprogramme, die System- oder Netzwerkfunktionen bereitstellen, zum Beispiel SSH, Webserver oder Datenbanken. Auf vielen Linux-Systemen werden Dienste mit systemd verwaltet. Das Werkzeug systemctl dient zum Starten, Stoppen, Neustarten, Aktivieren und Prüfen von Diensten. active bedeutet, dass ein Dienst läuft, enabled bedeutet, dass er beim Systemstart automatisch gestartet wird. Bei Dienstproblemen sollten systemctl status, journalctl -u, offene Ports, Rechte, Konfiguration und Abhängigkeiten geprüft werden. Ein laufender Dienst ist nicht automatisch von außen erreichbar, weil Firewall-Regeln, Bind-Adresse und Netzwerkpfade ebenfalls passen müssen.

---

**Merksätze**

    Prozess = laufendes Programm.

    Programm = Datei auf dem System.

    PID = Prozess-ID.

    PPID = Elternprozess-ID.

    Dienst = Hintergrundprogramm mit Aufgabe.

    Daemon = Hintergrunddienst.

    ps zeigt Prozesse.

    top zeigt Prozesse live.

    htop ist komfortabler,
    falls installiert.

    kill sendet Signale.

    TERM beendet sauber.

    KILL beendet hart.

    kill -9 nur im Notfall.

    systemd verwaltet Dienste und Systemstart.

    systemctl verwaltet systemd-Units.

    .service steht für Dienst.

    status prüft Dienstzustand.

    start startet jetzt.

    stop stoppt jetzt.

    restart startet neu.

    reload lädt Konfiguration neu.

    enable aktiviert Autostart.

    disable deaktiviert Autostart.

    active heißt:
    läuft gerade.

    enabled heißt:
    startet beim Boot.

    Dienst läuft heißt nicht automatisch:
    Port erreichbar.

    127.0.0.1 heißt:
    nur lokal.

    0.0.0.0 heißt:
    alle IPv4-Interfaces.

    journalctl -u zeigt Dienstlogs.

    Dienstfehler mit Status,
    Logs,
    Ports,
    Rechten,
    Konfiguration
    und Abhängigkeiten prüfen.