systemctl: Der Befehl zum Verwalten von Systemd-Diensten
Was ist systemctl?
systemctl ist ein leistungsstarkes Befehlszeilentool zur Verwaltung von Systemd-Diensten, einem zentralen Bestandteil der meisten modernen Linux-Distributionen. Es bietet eine einheitliche Schnittstelle für die Interaktion mit Diensten und ermöglicht dir die vollständige Kontrolle über ihren Lebenszyklus.
Was ist Systemd?
Systemd ist ein Init-System, das den Systemstart und die Verwaltung von Prozessen auf Linux-Systemen übernimmt. Es ersetzt traditionelle Init-Systeme wie SysV und ist für seine modulare Architektur, schnelle Startzeiten und umfangreichen Verwaltungsfunktionen bekannt.
Warum systemctl verwenden?
systemctl ist das primäre Tool zur Interaktion mit Systemd-Diensten. Es bietet folgende Vorteile:
- Zentralisierte Verwaltung: systemctl ermöglicht die Verwaltung aller Systemd-Dienste von einem einzigen Befehl aus.
- Einheitliche Schnittstelle: Es verwendet eine konsistente Syntax für alle Dienstoperationen, was das Erlernen und Verwenden vereinfacht.
- Erweiterte Funktionen: systemctl bietet erweiterte Funktionen wie die Möglichkeit, Einheiten zu maskieren, Dienste zu verketteten und Vorgabewerte zu verwenden.
- Fehlerbehebung: systemctl kann bei der Diagnose von Dienstproblemen helfen und bietet detaillierte Fehlermeldungen.
Grundlegende Verwendung von systemctl
systemctl ist ein Befehlszeilentool zum Verwalten von Systemd-Diensten und anderen Einheiten. Es bietet eine einheitliche Schnittstelle für die Interaktion mit dem Systemmanager.
Syntax
Die grundlegende Syntax von systemctl lautet wie folgt:
systemctl [Parameter] [Einheit]
Parameter
Zu den häufig verwendeten Parametern gehören:
- start: Startet die angegebene Einheit.
- stop: Stoppt die angegebene Einheit.
- restart: Startet die angegebene Einheit neu.
- reload: Lädt die Konfiguration der angegebenen Einheit neu.
- status: Zeigt den Status der angegebenen Einheit an.
- enable: Aktiviert die angegebene Einheit, sodass sie beim Systemstart automatisch gestartet wird.
- disable: Deaktiviert die angegebene Einheit, sodass sie nicht mehr automatisch gestartet wird.
Beispiel
Um beispielsweise den SSH-Dienst zu starten, kannst du folgenden Befehl verwenden:
systemctl start ssh
Um den Status des SSH-Dienstes abzufragen, kannst du folgenden Befehl verwenden:
systemctl status ssh
Aktivieren und Deaktivieren von Diensten
Aktivieren eines Dienstes
Mit systemctl kannst du Dienste aktivieren, sodass sie beim Systemstart automatisch gestartet werden. Dies ist nützlich für Dienste, die für den reibungslosen Betrieb deines Systems unerlässlich sind, wie z. B. den SSH-Dienst.
Um einen Dienst zu aktivieren, verwende den folgenden Befehl:
sudo systemctl enable <dienstname>
Beispiel:
sudo systemctl enable ssh
Deaktivieren eines Dienstes
Wenn du einen Dienst nicht mehr benötigst oder verhindern möchtest, dass er beim Systemstart ausgeführt wird, kannst du ihn deaktivieren.
Um einen Dienst zu deaktivieren, verwende den folgenden Befehl:
sudo systemctl disable <dienstname>
Beispiel:
sudo systemctl disable cups
Auswirkungen der Aktivierung und Deaktivierung
Wenn du einen Dienst aktivierst, wird ein symbolischer Link zu diesem Dienst in /etc/systemd/system/default.target.wants/
erstellt. Wenn du einen Dienst deaktivierst, wird dieser Link entfernt.
Best Practices
- Aktiviere nur Dienste, die für den sicheren und ordnungsgemäßen Betrieb deines Systems erforderlich sind.
- Deaktiviere Dienste, die du nicht verwendest, um unnötige Ressourcen zu sparen und die Sicherheit zu verbessern.
- Verwende
systemctl list-dependencies
anstelle vonsystemctl enable
, um sicherzustellen, dass alle Abhängigkeiten für einen Dienst aktiviert werden.
Dienststatus abfragen
Um den Status eines Dienstes abzufragen, verwendest du den Befehl systemctl
:
Befehlssyntax
systemctl status <Dienstname>
Erläuterung des Dienstatus
Der Befehl systemctl status
liefert folgende Informationen über den angegebenen Dienst:
- Loaded: Gibt an, ob der Dienst in den Speicher geladen wurde.
- Active: Gibt den aktuellen Status des Dienstes an (z. B. aktiv, inaktiv, fehlgeschlagen).
- Sub: Gibt die Unterdienste an, die vom angegebenen Dienst abhängen.
- CGroup: Zeigt die CGroup an, zu der der Dienst gehört.
Zusatzoptionen
Um weitere Informationen über den Dienststatus zu erhalten, kannst du folgende Optionen verwenden:
- --full: Zeigt eine ausführlichere Statusmeldung an.
- --verbose: Zeigt noch ausführlichere Informationen an, einschließlich der Einheitenkonfiguration.
- --no-legend: Unterdrückt die Legende, die den Statusmeldungen entspricht.
Beispiel
Um den Status des Dienstes httpd
abzufragen, gibst du folgenden Befehl ein:
systemctl status httpd
Ausgabe:
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2023-03-08 17:23:34 PST; 1h 16min ago
Main PID: 27638 (httpd)
Tasks: 29 (limit: 4915)
CGroup: /system.slice/httpd.service
├─27638 /usr/sbin/httpd -DFOREGROUND
├─27649 /usr/sbin/httpd -DFOREGROUND
├─27650 /usr/sbin/httpd -DFOREGROUND
├─27772 /usr/sbin/httpd -DFOREGROUND
├─27773 /usr/sbin/httpd -DFOREGROUND
│ └─29354 /usr/sbin/httpd -DFOREGROUND
├─27811 /usr/sbin/httpd -DFOREGROUND
├─27812 /usr/sbin/httpd -DFOREGROUND
├─27853 /usr/sbin/httpd -DFOREGROUND
├─27866 /usr/sbin/httpd -DFOREGROUND
├─27867 /usr/sbin/httpd -DFOREGROUND
├─27889 /usr/sbin/httpd -DFOREGROUND
├─27890 /usr/sbin/httpd -DFOREGROUND
├─27913 /usr/sbin/httpd -DFOREGROUND
├─27914 /usr/sbin/httpd -DFOREGROUND
├─27915 /usr/sbin/httpd -DFOREGROUND
├─27916 /usr/sbin/httpd -DFOREGROUND
├─27926 /usr/sbin/httpd -DFOREGROUND
├─27943 /usr/sbin/httpd -DFOREGROUND
├─27944 /usr/sbin/httpd -DFOREGROUND
├─27945 /usr/sbin/httpd -DFOREGROUND
├─27946 /usr/sbin/httpd -DFOREGROUND
├─27947 /usr/sbin/httpd -DFOREGROUND
├─27951 /usr/sbin/httpd -DFOREGROUND
├─27952 /usr/sbin/httpd -DFOREGROUND
├─27953 /usr/sbin/httpd -DFOREGROUND
├─27993 /usr/sbin/httpd -DFOREGROUND
├─27994 /usr/sbin/httpd -DFOREGROUND
├─27995 /usr/sbin/httpd -DFOREGROUND
├─27996 /usr/sbin/httpd -DFOREGROUND
├─27997 /usr/sbin/httpd -DFOREGROUND
├─28045 /usr/sbin/httpd -DFOREGROUND
├─28046 /usr/sbin/httpd -DFOREGROUND
├─28047 /usr/sbin/httpd -DFOREGROUND
├─28108 /usr/sbin/httpd -DFOREGROUND
└─28109 /usr/sbin/httpd -DFOREGROUND
Jan 01 00:00:08 ubuntu1804 systemd[1]: Starting The Apache HTTP Server...
Jan 01 00:00:08 ubuntu1804 httpd[27638]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Jan 01 00:00:08 ubuntu1804 systemd[1]: Started The Apache HTTP Server.
Tagesprotokolle anzeigen
Um die Tagesprotokolle eines Dienstes anzuzeigen, kannst du den Befehl systemctl status
verwenden.
So zeigst du die Tagesprotokolle an
Führe den folgenden Befehl aus, um die letzten zehn Zeilen des Tagesprotokolls eines Dienstes anzuzeigen:
systemctl status SERVICE_NAME --lines=10
Ersetze SERVICE_NAME
durch den Namen des Dienstes, dessen Protokoll du anzeigen möchtest.
So zeigst du alle Tagesprotokolle an
Um alle Tagesprotokolle eines Dienstes anzuzeigen, führe folgenden Befehl aus:
journalctl -u SERVICE_NAME
So filterst du die Tagesprotokolle
Du kannst die Tagesprotokolle auch mithilfe von Filtern nach bestimmten Einträgen filtern.
Zum Beispiel, um die letzten zehn Fehlermeldungen im Tagesprotokoll anzuzeigen, führe folgenden Befehl aus:
journalctl -u SERVICE_NAME --priority=err --lines=10
So setzt du die Tagesprotokolle zurück
Um die Tagesprotokolle eines Dienstes zurückzusetzen, führe folgenden Befehl aus:
systemctl reset-failed SERVICE_NAME
Fehlerbehebung bei systemctl
systemctl ist in der Regel ein zuverlässiges Werkzeug, aber hin und wieder kann es zu Fehlern kommen. Hier sind einige häufige Probleme und ihre Lösungen:
Fehlender Dienst
Wenn du versuchst, einen Dienst zu starten, der nicht existiert, erhältst du eine Fehlermeldung wie "Unknown unit: x". Stelle sicher, dass du den vollständigen Einheitennamen einschließlich des Dateityps (.service, .timer usw.) angibst.
Berechtigungsfehler
Wenn du keine Root-Berechtigungen hast, kannst du systemctl-Befehle möglicherweise nicht ausführen. Führe den Befehl mit sudo
aus:
sudo systemctl start my-service
Nicht aktivierter Dienst
Wenn ein Dienst nicht aktiviert ist, kannst du ihn nicht starten. Aktiviere den Dienst mit systemctl enable
:
sudo systemctl enable my-service
Veraltetes Systemd
Wenn du eine ältere Version von Systemd verwendest, kann es sein, dass bestimmte systemctl-Befehle oder Optionen nicht unterstützt werden. Aktualisiere auf die neueste Version von Systemd für maximale Kompatibilität.
Fehlerprotokolle anzeigen
Wenn systemctl einen Fehler meldet, kannst du die Fehlerprotokolle einsehen, um weitere Informationen zu erhalten. Verwende den Befehl systemctl status <unit-name>
mit der Option -l
:
sudo systemctl status my-service -l
Hilfe-Option
Die Hilfeoption --help
kann dir eine ausführliche Beschreibung der verfügbaren Optionen und der Syntax für einen bestimmten systemctl-Befehl geben:
systemctl --help start
Erweiterte Verwendung von systemctl
Vorgabeeinstellungen verwenden
Mit systemctl kannst du Vorgabeeinstellungen für Dienste festlegen, wie z. B. deren Startverhalten oder Abhängigkeiten. Dies kann mit dem Befehl systemctl set-default
erreicht werden.
Einheiten verwalten
Einheiten sind die grundlegenden Bausteine von Systemd. Sie können Dienste, Geräte oder Mounts darstellen. Mit systemctl kannst du Einheiten erstellen, löschen und bearbeiten. Dies ist hilfreich für die Fehlersuche oder die Anpassung des Systemverhaltens.
Masken und Verknüpfungen verwenden
Masken und Verknüpfungen sind leistungsstarke Funktionen, mit denen du das Verhalten von Diensten steuern kannst. Masken können Dienste dauerhaft deaktivieren, während Verknüpfungen mehrere Einheiten zu einer einzigen abstrakten Einheit kombinieren können. Dies ermöglicht eine präzise Kontrolle über das Systemstartverhalten.
Fehlerbehebung bei komplexen Szenarien
Wenn du auf komplexe Probleme stößt, kannst du die Konfiguration von Systemd mit dem Befehl systemctl status
überprüfen. Dieser Befehl zeigt detaillierte Informationen zum Status und den Abhängigkeiten von Diensten an. Darüber hinaus kannst du das Systemprotokoll mit journalctl
überprüfen, um weitere Hinweise zu finden.
Verbindung zu Remote-Systemen
systemctl kann auch verwendet werden, um Dienste auf Remote-Systemen zu verwalten. Verwende dazu den Befehl systemctl remote
, gefolgt von der IP-Adresse oder dem Hostnamen des Remote-Systems.
Weitere Ressourcen
Verwenden von Vorgabeeinstellungen
Damit du nicht jedes Mal die gleichen Optionen für systemctl
angeben musst, kannst du Vorgabeeinstellungen festlegen. Diese Einstellungen werden dann automatisch auf alle systemctl
-Befehle angewendet, bis du sie änderst.
Dauerhafte Vorgabeeinstellungen
Um dauerhafte Vorgabeeinstellungen festzulegen, bearbeite die Konfigurationsdatei /etc/systemd/system.conf
. Füge die gewünschten Optionen hinzu oder ändere die vorhandenen Optionen.
[Manager]
DefaultTimeoutStartSec=30s
DefaultTimeoutStopSec=30s
In diesem Beispiel wird die Standardzeit zum Starten und Stoppen von Diensten auf 30 Sekunden festgelegt.
Vorübergehende Vorgabeeinstellungen
Um vorübergehende Vorgabeeinstellungen festzulegen, verwende die -global
-Option. Diese Einstellungen gelten nur für die aktuelle systemctl
-Instanz.
systemctl -global DefaultTimeoutStartSec=10s start docker.service
In diesem Befehl wird die Standardstartzeit für den Dienst docker
auf 10 Sekunden festgelegt.
Spezielle Vorgabeeinstellungen
Neben den allgemeinen Vorgabeeinstellungen kannst du auch spezifische Vorgabeeinstellungen für einzelne Dienste oder Einheiten festlegen.
Einheitenvorgabeeinstellungen
Um Einheitenvorgabeeinstellungen festzulegen, bearbeite die Konfigurationsdatei der Einheit im Verzeichnis /etc/systemd/system
. Füge die gewünschten Optionen wie folgt hinzu:
[Unit]
Description=My Custom Unit
DefaultDependencies=required-dep.service
In diesem Beispiel wird die Beschreibung der Einheit festgelegt und als Abhängigkeit der standardmäßige Dienst required-dep.service
hinzugefügt.
Dienstvorgabeeinstellungen
Um Dienstvorgabeeinstellungen festzulegen, bearbeite die Dienstkonfigurationsdatei im Verzeichnis /etc/systemd/system
. Füge die gewünschten Optionen wie folgt hinzu:
[Service]
ExecStart=/usr/bin/my-custom-service
Type=simple
In diesem Beispiel wird der ausführbare Startbefehl des Dienstes festgelegt und der Diensttyp auf simple
festgelegt.
Verwalten von Einheiten
Neben Diensten verwaltet systemctl auch andere Entitäten, die als Einheiten bezeichnet werden. Eine Einheit kann ein Dienst, ein Einhängepunkt, eine Gerätedatei oder ein Sockel sein. Die Verwaltung von Einheiten bietet dir eine konsistente Schnittstelle zur Interaktion mit allen diesen Entitäten.
Auflisten von Einheiten
Verwende den Befehl systemctl list-units
mit den Optionen --all
und --no-legend
, um alle Einheiten auf deinem System aufzulisten:
systemctl list-units --all --no-legend
Dieser Befehl gibt eine Liste aller Einheiten mit Informationen wie Status, Beschreibung und Abhängigkeiten aus.
Informationen zu Einheiten abfragen
Du kannst den Befehl systemctl show
verwenden, um detaillierte Informationen zu einer bestimmten Einheit anzuzeigen:
systemctl show <Einheitsname>
Dieser Befehl gibt Informationen wie Beschreibung, Status, Abhängigkeiten und Konfigurationsparameter aus.
Aktivieren und Deaktivieren von Einheiten
Du kannst systemctl verwenden, um Einheiten zu aktivieren oder zu deaktivieren. Dies wirkt sich darauf aus, ob die Einheit beim Systemstart automatisch gestartet wird.
Um eine Einheit zu aktivieren, verwende den Befehl systemctl enable
:
systemctl enable <Einheitsname>
Um eine Einheit zu deaktivieren, verwende den Befehl systemctl disable
:
systemctl disable <Einheitsname>
Masken und Verknüpfungen
Systemd verwendet Masken und Verknüpfungen, um die Interaktion mit Einheiten zu vereinfachen.
- Masken: Masken können verwendet werden, um Einheiten zu deaktivieren, ohne ihre Konfiguration zu ändern.
- Verknüpfungen: Verknüpfungen können verwendet werden, um symbolische Links zu Einheiten zu erstellen, sodass du sie mit einem anderen Namen aufrufen kannst.
Weitere Informationen zur Verwendung von Masken und Verknüpfungen findest du in der Systemd-Dokumentation unter Unit Masking und Unit Aliases.
Verwenden von Masken und Verknüpfungen
Masken und Verknüpfungen sind in systemctl zwei Möglichkeiten, die Verwaltung von Systemd-Einheiten zu vereinfachen und zu abstrahieren.
Masken
Eine Maske ist eine Datei, die das Laden einer Einheit aus dem Dateisystem verhindert. Wenn du eine Maske für eine Einheit erstellst, wird diese nicht mehr automatisch beim Booten gestartet. Du kannst Masken verwenden, um Dienste zu deaktivieren, ohne sie zu entfernen.
Um eine Maske zu erstellen, kannst du den Befehl systemctl mask
verwenden:
sudo systemctl mask <name-der-einheit>
Um eine Maske zu entfernen, verwende den Befehl systemctl unmask
:
sudo systemctl unmask <name-der-einheit>
Verknüpfungen
Eine Verknüpfung ist eine Datei, die auf eine andere Einheit verweist. Wenn du eine Verknüpfung für eine Einheit erstellst, wird sie beim Starten oder Stoppen der Verknüpfung auch gestartet oder gestoppt.
Um eine Verknüpfung zu erstellen, kannst du den Befehl systemctl link
verwenden:
sudo systemctl link <name-der-einheit> <name-der-verknüpfung>
Um eine Verknüpfung zu entfernen, verwende den Befehl systemctl unlink
:
sudo systemctl unlink <name-der-einheit> <name-der-verknüpfung>
Masken und Verknüpfungen können sehr nützlich sein, um die Verwaltung von Systemd-Einheiten zu vereinfachen. Sie können dir dabei helfen, Dienste zu deaktivieren, ohne sie zu entfernen, und du kannst damit schnell und einfach Verknüpfungen zu häufig verwendeten Einheiten erstellen.
Neue Posts
World of Warcraft auf Linux spielen: Eine guide für Abenteurer
Einführung in World of Warcraft
Node.js NVM: Antworten auf die häufigsten Fragen
Entwicklung
Professionelle Gmail-HTML-Signaturen: Erstellen, Gestalten und Nutzen
Marketingstrategien
Die vollständige Anleitung zu poczta wp: Alles, was Sie wissen müssen
Sicherheit und Datenschutz
HTML-Content: Der ultimative Leitfaden zur Erstellung ansprechender Webseiten
SEO-Optimierung
Das HTML-Title-Attribut: Ein Leitfaden zur Optimierung von Titeln für SEO und Benutzerfreundlichkeit
Online-Marketing
HTTP-Statuscodes: Ihre Bedeutung und Verwendung im Web
Einführung in HTTP-Statuscodes
Besucherzähler für Websites: Tracking Ihres Website-Traffics für Erfolg
SEO-Optimierung
Beschleunigen Sie die Dateneingabe mit HTML Datalist
Webentwicklung
HTML in PUG konvertieren: Einfach und schnell gemacht
Webentwicklung
Beliebte Posts
SteamCMD: Der umfassende Leitfaden zur Verwaltung von Steam-Servern
Sicherheitsrichtlinien
POST-Anfragen: Erstellen, Senden und Empfangen von Daten im Web
Webentwicklung
LaTeX: Das mächtige Werkzeug für hochwertiges Dokumentenschreiben
Dokumentenerstellung
Wiederherstellung beschädigter Linux-Dateisysteme mit fsck: Ein umfassender Leitfaden
Fehlerbehebung
Die vollständige Anleitung zu poczta wp: Alles, was Sie wissen müssen
Sicherheit und Datenschutz
Gigacube Admin: Zugang zu den erweiterten Einstellungen Ihres Routers
Fehlerbehebung
Linux Mint Themes: Personalisieren Sie Ihren Desktop
Open Source
TCPdump-Beispiele: Paketakquise und Netzwerkdiagnose
Fehlerbehebung
Mounten von ISO-Images unter Linux: Eine Schritt-für-Schritt-Anleitung
Anleitungen
Linux Open File: Anleitung zum Öffnen, Bearbeiten und Löschen von Dateien aus dem Terminal
Open Source