CodeGym /Kurse /Docker SELF /Grundlagen der Serviceverwaltung: Befehle systemctl (Star...

Grundlagen der Serviceverwaltung: Befehle systemctl (Starten, Stoppen, Neustarten von Services)

Docker SELF
Level 3 , Lektion 0
Verfügbar

Grundlagen der Serviceverwaltung: Befehle systemctl (Starten, Stoppen, Neustarten von Services)

1. Was sind Services in Linux?

Services sind das Fundament jeder modernen Linux-Distribution. Möchtest du deinen Webserver mit Nginx starten? Starte und konfiguriere den entsprechenden Service. Möchtest du, dass die MySQL-Datenbank läuft? Auch das ist ein Service. Sogar dein Lieblings-cron, der die bewundernswerten Bash-Skripte ausführt, ist ein Service. Das Verwalten von Services ist eine Fähigkeit, die du nicht nur bei der Arbeit, sondern auch in deinen privaten Projekten definitiv anwenden wirst. Übrigens wird in Vorstellungsgesprächen die Frage "Wie würdest du einen Service stoppen?" häufiger gestellt, als man vielleicht denkt.

Definition und Rolle

Ein Service in Linux ist ein Programm, das im Hintergrund läuft (also als Daemon, vom englischen "daemon"). Diese Programme können entweder automatisch beim Systemstart oder bei Bedarf manuell gestartet werden. Sie sind verantwortlich für die Ausführung bestimmter Aufgaben, wie zum Beispiel:

  • Bearbeiten von Webanfragen (zum Beispiel nginx/apache).
  • Unterstützung des Remote-Zugriffs (zum Beispiel openssh).
  • Ausführung von Aufgaben nach Zeitplan (zum Beispiel cron).

Im Grunde sind Services die "Arbeitspferde", die Aufgaben erledigen, die der Benutzer nicht sieht, die aber absolut entscheidend für das Funktionieren des Systems sind.


2. Grundlagen des Service-Managements mit systemctl

Was ist systemctl?

Fangen wir damit an: systemctl ist der Hauptbefehl zur Verwaltung von Services auf Systemen, die systemd verwenden. Wenn dein System auf einer modernen Linux-Distribution läuft (z. B. Ubuntu, Fedora oder CentOS), dann verwendet es höchstwahrscheinlich systemd.

Hauptfunktionen

  1. Service starten: Startet einen Dienst, wenn er deaktiviert ist.
  2. Service stoppen: Beendet den Dienst.
  3. Service neu starten: Stoppt den Dienst und startet ihn dann erneut.
  4. Status prüfen: Zeigt den aktuellen Zustand des Dienstes an.

Hier ist die grundlegende Struktur des Befehls:

sudo systemctl [aktion] [service_name]

Service starten und stoppen

Starten:

Stell dir vor, du hast den Webserver nginx installiert und möchtest ihn starten. Genau hierfür wird der Befehl start verwendet:

sudo systemctl start nginx

Stoppen:

Aber was, wenn du den Webserver vorübergehend deaktivieren möchtest? Hier hilft dir der Befehl stop:

sudo systemctl stop nginx

Service neu starten

Ein Neustart ist nötig, um Änderungen in der Konfiguration anzuwenden oder den Service einfach "aufzufrischen" (ein bisschen wie ihm Kaffee geben und daran erinnern, weiterzumachen). Nutze dazu den Befehl restart:

sudo systemctl restart nginx

Status prüfen

Bist du unsicher, ob nginx läuft? Der Befehl status liefert dir detaillierte Informationen:

sudo systemctl status nginx

Die Ausgabe enthält:

  • Die Prozess-ID (PID).
  • Startzeit.
  • Fehlerprotokolle, falls etwas schiefgelaufen ist.

Beispielausgabe:

nginx.service - A high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-11-01 09:00:00 UTC; 10min ago
   ...

3. Autostart von Services

Aktivieren von Autostart

Damit ein Service bei jedem Systemstart automatisch startet, verwende:

sudo systemctl enable nginx

Deaktivieren von Autostart

Und wenn du möchtest, dass ein Service beim Hochfahren nicht mehr startet:

sudo systemctl disable nginx

Hier ist ein einfacher Weg zu überprüfen, ob der Autostart aktiviert ist:

systemctl is-enabled nginx

Service-Management in der Praxis

Lasst uns eine umfassende Übung anhand des Dienstes cron machen.

  1. Starte den Dienst cron:

    sudo systemctl start cron
    
  2. Überprüfe, ob er läuft:

    sudo systemctl status cron
    

    Stelle sicher, dass der Status "active (running)" lautet.

  3. Stoppe den Dienst cron:

    sudo systemctl stop cron
    

    Überprüfe, ob der Status sich auf "inactive (dead)" geändert hat.

  4. Starte den Dienst cron neu:

    sudo systemctl restart cron
    

4. Unterschied zwischen aktiven, deaktivierten und abgestürzten Services

Services können verschiedene Zustände haben. Hier sind die Haupttypen:

  1. Active (running) — der Service läuft aktiv; alles in Ordnung.
  2. Inactive (dead) — der Service ist gestoppt.
  3. Failed — beim Starten, Stoppen oder Ausführen des Services trat ein Fehler auf.

Um schnell alle Services zu finden, die sich im Fehlerzustand befinden, verwende:

systemctl --failed

5. Typische Fehler und Stolpersteine

Fehler: Unit not found

Wenn du eine Nachricht wie diese erhältst:

Failed to start nginx.service: Unit nginx.service not found.

Das könnte bedeuten, dass der benötigte Service entweder nicht installiert ist oder sein Name falsch angegeben wurde. Überprüfe den richtigen Namen:

systemctl list-unit-files | grep nginx

Berechtigungsfehler

Wenn du vergessen hast, den Befehl mit sudo-Rechten auszuführen, bekommst du wahrscheinlich eine Zugriff verweigert-Meldung:

Permission denied

Vergiss nicht, vor den systemctl-Befehlen sudo hinzuzufügen.


6. Anwendung in echten Projekten

Die Verwaltung von Diensten ist etwas, das du in jeder Linux-bezogenen Rolle verwenden wirst:

  • DevOps: Automatisierung und Verwaltung aller Systemdienste.
  • Serveradministration: Überwachung des Zustands von Webservern, Datenbanken und anderen Diensten.
  • Entwicklung auf Linux: Du solltest verstehen, wie man Dienste verwaltet, die mit deinem Projekt verbunden sind (z. B. Starten von Entwicklungsservern).

Das Wissen um den Befehl systemctl ist also nicht nur eine abstrakte Fähigkeit, sondern ein echtes Werkzeug für die Arbeit. Beispiel: Du musst den Webserver nach einem Website-Update neu starten? Ein Aufruf von sudo systemctl restart nginx — und die Aufgabe ist erledigt!

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION