Linux-Dienstverwaltung

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Willkommen in diesem praktischen Lab zur Linux-Servicemanagement. Dienste (Services) in Linux sind Hintergrundprozesse, die kritische Systemfunktionen wie Netzwerkkonnektivität, Protokollierung, Drucken und vieles mehr verwalten. Die effiziente Verwaltung dieser Dienste ist eine essentielle Fähigkeit für Linux-Administratoren.

In diesem Lab werden Sie lernen, wie Sie den Befehl systemctl verwenden, der Teil der systemd-Suite ist - dem Standard-Init-System und Dienstemanager für die meisten modernen Linux-Distributionen. Sie werden üben, den Dienststatus zu prüfen, Dienste zu starten und zu stoppen sowie das Verhalten der Dienste beim Systemstart zu konfigurieren.

Am Ende dieses Labs werden Sie die Grundlagen des Linux-Servicemanagements verstehen und in der Lage sein, Systemdienste in einer Linux-Umgebung effektiv zu steuern.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/InputandOutputRedirectionGroup(["Input and Output Redirection"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/InputandOutputRedirectionGroup -.-> linux/redirect("I/O Redirecting") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") subgraph Lab Skills linux/echo -.-> lab-271377{{"Linux-Dienstverwaltung"}} linux/cat -.-> lab-271377{{"Linux-Dienstverwaltung"}} linux/redirect -.-> lab-271377{{"Linux-Dienstverwaltung"}} linux/service -.-> lab-271377{{"Linux-Dienstverwaltung"}} end

Verständnis und Prüfung des Systemdienststatus

In diesem Schritt werden Sie lernen, wie Sie den Status von Systemdiensten mit dem Befehl systemctl prüfen. Das Verständnis des Dienststatus ist der erste Schritt zur effektiven Dienstverwaltung.

Was sind Systemdienste?

Systemdienste (oder Daemons) sind Programme, die im Hintergrund laufen, um verschiedene Systemaufgaben auszuführen. Sie starten normalerweise beim Systemstart und laufen bis zum Herunterfahren des Systems. Beispiele sind Webserver, Datenbankserver, SSH-Server und Druckdienste.

Prüfung des Dienststatus

Beginnen wir damit, den Status des SSH-Dienstes (sshd) zu prüfen, der häufig für den Remotezugriff auf Linux-Systeme verwendet wird:

  1. Öffnen Sie ein Terminal in der LabEx-VM-Umgebung. Sie sollten sich bereits im Standardverzeichnis befinden, das /home/labex/project ist.

  2. Führen Sie den folgenden Befehl aus, um den Status des SSH-Dienstes zu prüfen:

    systemctl status sshd

    Sie sollten eine Ausgabe ähnlich der folgenden sehen:

    ● ssh.service - OpenBSD Secure Shell server
      Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
      Active: active (running) since Wed 2023-10-25 08:15:00 UTC; 1h 30min ago
        Docs: man:sshd(8)
              man:sshd_config(5)
     Process: 1234 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
    Main PID: 1235 (sshd)
       Tasks: 1 (limit: 4915)
      Memory: 5.6M
         CPU: 500ms
      CGroup: /system.slice/ssh.service
              └─1235 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

    Diese Ausgabe liefert wichtige Informationen über den Dienst:

    • Loaded: Zeigt an, ob der Dienst geladen ist und ob er beim Systemstart aktiviert ist
    • Active: Zeigt an, ob der Dienst derzeit läuft
    • Process/Main PID: Zeigt die Prozess-ID des Dienstes an
    • Memory/CPU: Zeigt die Ressourcenauslastung an
    • Logs: Aktuelle Protokolleinträge in Bezug auf den Dienst
  3. Wenn Sie den Status eines anderen Dienstes prüfen müssen, können Sie sshd durch den Namen dieses Dienstes ersetzen. Beispielsweise, um den Status des Apache-Webservers (falls installiert) zu prüfen:

    systemctl status apache2

Auflistung aller Dienste

Sie können alle Dienste auf Ihrem System mit dem folgenden Befehl auflisten:

  1. Um alle aktiven Dienste aufzulisten:

    systemctl list-units --type=service --state=active

    Dieser Befehl zeigt alle Dienste an, die derzeit auf Ihrem System aktiv sind.

  2. Um alle Dienste unabhängig von ihrem Zustand aufzulisten:

    systemctl list-units --type=service --all

Erstellung einer Dienstlisten-Datei

Jetzt erstellen wir eine Datei, um eine Liste aller laufenden Dienste auf dem System zu speichern:

  1. Erstellen Sie eine Datei namens services_list.txt im aktuellen Verzeichnis, indem Sie folgenden Befehl ausführen:

    systemctl list-units --type=service --state=running > ~/project/services_list.txt

    Dieser Befehl führt systemctl list-units aus und leitet die Ausgabe in eine Datei namens services_list.txt in Ihrem Projektverzeichnis um.

  2. Überprüfen Sie, ob die Datei erstellt wurde und Daten enthält:

    cat ~/project/services_list.txt

    Sie sollten eine Liste aller laufenden Dienste auf Ihrem System sehen.

In diesem Schritt haben Sie gelernt, wie Sie den Status von Diensten prüfen und wie Sie eine Liste aller laufenden Dienste auf Ihrem System erstellen. Diese Informationen sind wertvoll, um zu verstehen, welche Dienste aktiv sind und wie sie konfiguriert sind.

Steuerung von Systemdiensten: Starten, Stoppen und Neustarten

In diesem Schritt werden Sie lernen, wie Sie Systemdienste starten, stoppen und neu starten. Diese Operationen sind für die Wartung von Diensten, die Fehlerbehebung und die Anwendung von Konfigurationsänderungen unerlässlich.

Starten und Stoppen von Diensten

Üben wir die Steuerung des SSH-Dienstes:

  1. Prüfen Sie zunächst den aktuellen Status des SSH-Dienstes:

    systemctl status sshd

    Beachten Sie, ob der Dienst derzeit aktiv oder inaktiv ist.

  2. Stoppen Sie nun den SSH-Dienst:

    sudo systemctl stop sshd

    Dieser Befehl stoppt den Dienst sofort. Bei Erfolg gibt dieser Befehl keine Ausgabe zurück.

  3. Überprüfen Sie, ob der Dienst gestoppt wurde:

    systemctl status sshd

    Die Ausgabe sollte nun anzeigen, dass der Dienst "inactive (dead)" ist:

    ● ssh.service - OpenBSD Secure Shell server
      Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
      Active: inactive (dead) since Wed 2023-10-25 10:15:00 UTC; 5s ago
  4. Starten Sie den Dienst erneut:

    sudo systemctl start sshd
  5. Überprüfen Sie, ob der Dienst gestartet wurde:

    systemctl status sshd

    Die Ausgabe sollte anzeigen, dass der Dienst wieder "active (running)" ist.

Neustarten von Diensten

Das Neustarten eines Dienstes ist eine häufige Operation, insbesondere nach Änderungen seiner Konfiguration:

  1. Um den SSH-Dienst neu zu starten:

    sudo systemctl restart sshd

    Dieser Befehl stoppt und startet dann den Dienst.

  2. Um den Neustart zu überprüfen, prüfen Sie den Dienststatus:

    systemctl status sshd

    Schauen Sie sich die Zeile "Active" an, um zu sehen, wann der Dienst zuletzt gestartet wurde.

Erstellung einer Referenzdatei für Dienststeuerungsbefehle

Erstellen wir eine Referenzdatei mit den Befehlen, die Sie gelernt haben:

  1. Erstellen Sie eine Datei namens service_control.txt in Ihrem Projektverzeichnis:

    echo "Service Control Commands:" > ~/project/service_control.txt
    echo "Start a service: sudo systemctl start <service_name>" >> ~/project/service_control.txt
    echo "Stop a service: sudo systemctl stop <service_name>" >> ~/project/service_control.txt
    echo "Restart a service: sudo systemctl restart <service_name>" >> ~/project/service_control.txt
  2. Überprüfen Sie den Inhalt der Datei:

    cat ~/project/service_control.txt

In diesem Schritt haben Sie gelernt, wie Sie Dienste durch Starten, Stoppen und Neustarten steuern können. Diese Operationen sind grundlegend für die Verwaltung und Wartung von Diensten in Linux-Systemen.

Verwaltung des Startverhaltens von Diensten: Aktivieren und Deaktivieren

In diesem Schritt werden Sie lernen, wie Sie konfigurieren können, ob Dienste automatisch beim Systemstart gestartet werden. Dies ist wichtig, um sicherzustellen, dass erforderliche Dienste nach einem Systemneustart ohne manuelle Eingriffe verfügbar sind.

Verständnis der Dienststartkonfiguration

Dienste können so konfiguriert werden, dass sie automatisch beim Systemstart gestartet werden (aktiviert) oder dass sie manuell gestartet werden müssen (deaktiviert). Diese Konfiguration ist unabhängig vom aktuellen Laufzustand des Dienstes.

Prüfung, ob ein Dienst aktiviert ist

  1. Um zu prüfen, ob der SSH-Dienst so konfiguriert ist, dass er beim Systemstart gestartet wird:

    systemctl is-enabled sshd

    Die Ausgabe ist entweder "enabled" (wird beim Systemstart gestartet) oder "disabled" (wird nicht beim Systemstart gestartet).

Deaktivieren eines Dienstes

Wenn Sie einen Dienst deaktivieren, konfigurieren Sie ihn so, dass er nicht automatisch beim Systemstart gestartet wird:

  1. Deaktivieren Sie den SSH-Dienst:

    sudo systemctl disable sshd

    Sie sollten eine Meldung sehen, die anzeigt, dass der Symlink entfernt wurde:

    Removed /etc/systemd/system/multi-user.target.wants/ssh.service.
  2. Überprüfen Sie, ob der Dienst jetzt deaktiviert ist:

    systemctl is-enabled sshd

    Die Ausgabe sollte "disabled" sein.

  3. Beachten Sie, dass das Deaktivieren eines Dienstes ihn nicht stoppt, wenn er derzeit läuft. Prüfen Sie den aktuellen Status:

    systemctl status sshd

    Auch wenn der Dienst jetzt für den nächsten Systemstart deaktiviert ist, kann er immer noch aktiv sein.

Aktivieren eines Dienstes

Wenn Sie einen Dienst aktivieren, konfigurieren Sie ihn so, dass er automatisch beim Systemstart gestartet wird:

  1. Aktivieren Sie den SSH-Dienst erneut:

    sudo systemctl enable sshd

    Sie sollten eine Meldung sehen, die anzeigt, dass der Symlink erstellt wurde:

    Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service.
  2. Überprüfen Sie, ob der Dienst jetzt aktiviert ist:

    systemctl is-enabled sshd

    Die Ausgabe sollte "enabled" sein.

Kombinierte Befehle

Sie können auch das Aktivieren/Deaktivieren mit dem Starten/Stoppen in einem einzigen Befehl kombinieren:

  1. Um einen Dienst in einem Befehl zu deaktivieren und zu stoppen:

    sudo systemctl disable --now sshd
  2. Um einen Dienst in einem Befehl zu aktivieren und zu starten:

    sudo systemctl enable --now sshd

Erstellung einer Referenzdatei für die Dienststartkonfiguration

Erstellen wir eine Referenzdatei mit den Befehlen, die Sie gelernt haben:

  1. Erstellen Sie eine Datei namens service_boot.txt in Ihrem Projektverzeichnis:

    echo "Service Boot Configuration Commands:" > ~/project/service_boot.txt
    echo "Check if a service is enabled: systemctl is-enabled <service_name>" >> ~/project/service_boot.txt
    echo "Enable a service to start at boot: sudo systemctl enable <service_name>" >> ~/project/service_boot.txt
    echo "Disable a service from starting at boot: sudo systemctl disable <service_name>" >> ~/project/service_boot.txt
    echo "Enable and immediately start a service: sudo systemctl enable --now <service_name>" >> ~/project/service_boot.txt
    echo "Disable and immediately stop a service: sudo systemctl disable --now <service_name>" >> ~/project/service_boot.txt
  2. Überprüfen Sie den Inhalt der Datei:

    cat ~/project/service_boot.txt

In diesem Schritt haben Sie gelernt, wie Sie das Startverhalten von Diensten verwalten können, indem Sie Dienste aktivieren und deaktivieren. Dies ist entscheidend für die Konfiguration, welche Dienste automatisch beim Systemstart gestartet werden, um sicherzustellen, dass notwendige Dienste verfügbar sind, während unnötige Dienste keine Ressourcen verbrauchen.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen der Linux-Dienstverwaltung mit dem Befehl systemctl gelernt. Sie haben essentielle Fähigkeiten geübt, die jeder Linux-Administrator kennen sollte:

  1. Prüfung des Dienststatus: Sie haben gelernt, wie Sie den aktuellen Zustand von Diensten anzeigen können, was für die Überwachung und Fehlerbehebung von entscheidender Bedeutung ist.

  2. Steuerung von Diensten: Sie haben das Starten, Stoppen und Neustarten von Diensten geübt, was grundlegende Operationen für die Wartung und Konfigurationsänderungen sind.

  3. Verwaltung des Startverhaltens: Sie haben gelernt, wie Sie Dienste beim Systemstart aktivieren und deaktivieren können, um zu steuern, welche Dienste nach einem Neustart automatisch ausgeführt werden.

Diese Fähigkeiten bilden die Grundlage für eine effektive Dienstverwaltung in Linux-Umgebungen. Wenn Sie weiterhin mit Linux-Systemen arbeiten, werden Sie diese Befehle für die Aufrechterhaltung der Systemstabilität und -leistung als unerlässlich erachten.

Denken Sie daran, dass eine ordnungsgemäße Dienstverwaltung für die System-Sicherheit, die Ressourcenoptimierung und die Gewährleistung der Verfügbarkeit erforderlicher Funktionen von entscheidender Bedeutung ist. Das Wissen, das Sie in diesem Lab erworben haben, wird als Baustein für fortgeschrittenere Linux-Administrationsaufgaben dienen.