Ein Linux-System bietet eine Vielzahl von Systemdiensten (wie Prozessmanagement, Login, Syslog, Cron usw.) und Netzwerkdiensten (wie z Remote-Anmeldung, E-Mail, Drucker, Webhosting, Datenspeicherung, Dateiübertragung, Auflösung von Domänennamen (mithilfe von DNS), dynamische Zuweisung von IP-Adressen (mithilfe von DHCP) und vieles mehr.
Technisch gesehen a Service ist ein Prozess oder eine Gruppe von Prozessen (allgemein als Daemons bezeichnet), die kontinuierlich im Hintergrund ausgeführt werden und auf eingehende Anforderungen warten (insbesondere von Clients).
Linux unterstützt verschiedene Arten der Verwaltung (Start, Stopp, Neustart, automatischen Start beim Systemstart aktivieren usw.) Dienste, normalerweise über einen Prozess- oder Dienstmanager. Die meisten, wenn nicht alle modernen Linux-Distributionen verwenden jetzt denselben Prozessmanager: systemd.
Lesen Sie auch: Die Geschichte hinter init und systemd: Warum init durch systemd ersetzt werden musste Linux
Systemd ist ein System- und Service-Manager für Linux. Ein Drop-In-Ersatz für den Init-Prozess, der mit SysV- und LSB-Init-Skripten und dem Befehl systemctl kompatibel ist, ist das primäre Tool zum Verwalten von systemd.
In diesem Handbuch wird gezeigt, wie alle laufenden Dienste unter systemd unter Linux aufgelistet werden.
Auflisten laufender Dienste unter SystemD in Linux
Wenn Sie den Befehl systemctl ohne Argumente ausführen, wird eine Liste aller geladenen systemd-Einheiten (lesen Sie die systemd-Dokumentation, um weitere Informationen zu systemd-Einheiten zu erhalten) einschließlich der Dienste angezeigt, deren Status angezeigt wird (ob aktiv oder aktiv) nicht).
# systemctl
Um alle auf Ihrem System geladenen Dienste aufzulisten (ob aktiv; ausgeführt, beendet oder fehlgeschlagen), verwenden Sie den Unterbefehl list-unit und --type
Schalter mit dem Wert service.
# systemctl list-units --type=serviceOR# systemctl --type=service
Um alle geladenen, aber aktiven Dienste aufzulisten, die ausgeführt werden und die beendet wurden, können Sie die Option --state
mit einem Wert hinzufügen von aktiv wie folgt.
# systemctl list-units --type=service --state=activeOR# systemctl --type=service --state=active
Führen Sie den folgenden Befehl aus, um einen schnellen Überblick über alle laufenden Dienste (dh alle geladenen und aktiv ausgeführten Dienste) zu erhalten.
# systemctl list-units --type=service --state=running OR# systemctl --type=service --state=running
Wenn Sie den vorherigen Befehl häufig verwenden, können Sie wie gezeigt einen Alias-Befehl in Ihrer ~ / .bashrc-Datei erstellen, um ihn einfach aufzurufen.
# vim ~/.bashrc
Fügen Sie dann die folgende Zeile unter der Liste der Aliase hinzu, wie im Screenshot gezeigt.
alias running_services="systemctl list-units --type=service --state=running"
Speichern Sie die Änderungen in der Datei und schließen Sie sie. Verwenden Sie ab sofort den Befehl „running_services“, um eine Liste aller geladenen, aktiv ausgeführten Dienste auf Ihrem Server anzuzeigen.
# running_services#use the Tab completion
Außerdem ist ein wichtiger Aspekt von Diensten Der Port, den sie verwenden. Um den Port zu bestimmen, den ein Daemon-Prozess abhört, können Sie die Tools netstat oder ss wie gezeigt verwenden.
Wobei das Flag -l
bedeutet Alle Abhörsockets drucken, -t
zeigt alle TCP-Verbindungen an, -u
zeigt alle UDP-Verbindungen an, -n
bedeutet, dass numerische Portnummern gedruckt werden (anstelle von Anwendungsnamen) und -p
bedeutet, dass der Anwendungsname angezeigt wird.
# netstat -ltup | grep zabbix_agentdOR# ss -ltup | grep zabbix_agentd
Die Die fünfte Spalte zeigt den Socket: Lokale Adresse: Port. In diesem Fall überwacht der Prozess zabbix_agentd Port 10050.
Auch wenn auf Ihrem Server ein Firewall-Dienst ausgeführt wird, der diese steuert Um den Datenverkehr zu oder von ausgewählten Diensten oder Ports zu blockieren oder zuzulassen, können Sie Dienste oder Ports, die in der Firewall geöffnet wurden, mit dem Befehl firewall-cmd oder ufw (abhängig von den von Ihnen verwendeten Linux-Distributionen) wie gezeigt auflisten / p>
# firewall-cmd --list-services # firewall-cmd --list-ports$ sudo ufw status