GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So listen Sie Systemd-Dienste unter Linux auf

Während systemd viele Probleme mit der Systemverwaltung löst, ist es manchmal auch verwirrend.

Selbst eine einfache Aufgabe wie das Auflisten von systemd-Diensten könnte Sie zum Nachdenken anregen.

In diesem Artikel zeige ich Ihnen, wie Sie systemd-Dienste auflisten. Ich werde auch die Ausgabe erklären, damit Sie die verschiedenen Zustände der Dienste leichter verstehen können.

Ich nehme an, dass Sie etwas über Systemd wissen, aber selbst wenn Sie dies nicht tun, sollte es in Ordnung sein.

Wie man aktive Dienste in systemd auflistet

systemd-Dienste werden von systemctl verwaltet Befehl. Wenn Sie systemctl ausführen ohne irgendwelche Argumente ruft es die Voreinstellung list-units auf Unterbefehl und listet verschiedene Arten von systemd-Einheiten wie Dienste, Sockets, Ziele usw. auf.

Aber Ihr Ziel ist es, die Dienste aufzulisten, also spezifizieren Sie den Gerätetyp mit --type so kennzeichnen:

systemctl --type=service

Ist Ihnen aufgefallen, dass ich die list-units nicht angegeben habe Unterbefehl, weil es der Standard ist? Wenn Sie der Konvention folgen möchten, können Sie dies ebenfalls angeben. Ich bevorzuge es so und werde mich im Rest des Tutorials an diese Konvention halten.

systemctl list-units --type=service

In beiden Fällen ist die Ausgabe gleich. Standardmäßig zeigt dieser Befehl nur geladene und aktive Dienste an in alphabetischer Reihenfolge:

  UNIT                     LOAD   ACTIVE SUB     DESCRIPTION                                                       
  accounts-daemon.service  loaded active running Accounts Service                                                  
  acpid.service            loaded active running ACPI event daemon                                                 
  alsa-restore.service     loaded active exited  Save/Restore Sound Card State                                     
  apparmor.service         loaded active exited  Load AppArmor profiles                                            
  apport.service           loaded active exited  LSB: automatic crash report generation

Lassen Sie mich die Ausgabe erklären:

  • UNIT :Name der Systemeinheit.
  • LOAD : ob die Unit-Konfigurationsdatei von systemd geparst wurde.
  • ACTIVE :High-Level-Zustand der Einheit.
  • SUB :Low-Level-Zustand der Einheit. Eine aktive Einheit kann sich im laufenden Zustand oder im beendeten Zustand befinden. Dieser Wert hängt vom Diensttyp ab.

Wie Sie sehen können, könnten Sie die geladenen Dienste auf Ihrem Linux-System auflisten. Aber ein aktiver systemd-Dienst könnte laufen oder beendet werden (nach erfolgreicher Ausführung).

Alle laufenden systemd-Dienste auflisten

Der aktive Status kann auch einen Unterstatus haben, wie z. B. läuft, beendet usw. Sie können denselben --state verwenden Flag mit dem Unterzustand.

Um die laufenden systemd-Dienste aufzulisten, verwenden Sie --state=running so kennzeichnen:

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

Hier ist eine Beispielausgabe für mein System, die einige der laufenden systemd-Dienste zeigt:

  UNIT                        LOAD   ACTIVE SUB     DESCRIPTION                                                     
  accounts-daemon.service     loaded active running Accounts Service                                                
  acpid.service               loaded active running ACPI event daemon                                               
  avahi-daemon.service        loaded active running Avahi mDNS/DNS-SD Stack                                         
  bluetooth.service           loaded active running Bluetooth service                                               
  bolt.service                loaded active running Thunderbolt system service        

Liste alle geladenen systemd-Dienste auf, einschließlich der inaktiven

Standardmäßig zeigt der Befehl systemctl nur die geladenen und aktiven Units an.

Wenn Sie alle geladenen Dienste einschließlich der inaktiven auflisten möchten, verwenden Sie --all Flagge:

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

Sie können jetzt sogar die inaktiven Dienste sehen:

  UNIT                                                  LOAD      ACTIVE   SUB     DESCRIPTION                                                                     
  accounts-daemon.service                               loaded    active   running Accounts Service                                                                
  acpid.service                                         loaded    active   running ACPI event daemon                                                               
  alsa-restore.service                                  loaded    active   exited  Save/Restore Sound Card State                                                   
  alsa-state.service                                    loaded    inactive dead    Manage Sound Card State (restore and store)                                     
  anacron.service                                       loaded    inactive dead    Run anacron jobs                                                                
  apparmor.service                                      loaded    active   exited  Load AppArmor profiles 

Alle inaktiven systemd-Dienste auflisten

Wenn Sie nur die inaktiven Dienste sehen möchten, können Sie verschiedene Flags wie --all kombinieren und --state so:

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

Wie Sie in der Ausgabe sehen können, werden alle inaktiven systemd-Dienste angezeigt:

  UNIT                                   LOAD      ACTIVE   SUB  DESCRIPTION                                                                     
  alsa-state.service                     loaded    inactive dead Manage Sound Card State (restore and store)                                     
  anacron.service                        loaded    inactive dead Run anacron jobs                                                                
  apport-autoreport.service              loaded    inactive dead Process error reports when automatic reporting is enabled                       
  apt-daily-upgrade.service              loaded    inactive dead Daily apt upgrade and clean activities                                          
  apt-daily.service                      loaded    inactive dead Daily apt download activities                                                   
● auditd.service                         not-found inactive dead auditd.service                              

Listen Sie alle installierten systemd-Dienste auf (auch wenn sie nicht geladen sind)

Jede systemd-Unit, sei es Dienst oder Socket oder irgendeine andere Unit, hat eine Unit-Datei, die

systemctl list-unit-files --type=service

Folgendes sollten Sie sehen:

UNIT FILE                                  STATE           VENDOR PRESET
accounts-daemon.service                    enabled         enabled      
acpid.service                              disabled        enabled      
alsa-restore.service                       static          enabled      
alsa-state.service                         static          enabled      
alsa-utils.service                         masked          enabled      
anacron.service                            enabled         enabled      
apparmor.service                           enabled         enabled      
apport-autoreport.service                  static          enabled      
[email protected]                    static          enabled     

Das Erklären jedes Zustandstyps wird zu langwierig und ist nicht Gegenstand dieses Artikels. Vielleicht schreibe ich in Zukunft darüber.

Listen Sie alle systemd-Dienste auf, die bei jedem Systemstart automatisch ausgeführt werden

Verwenden Sie diesen Befehl, um alle systemd-Dienste anzuzeigen, die bei jedem Systemstart automatisch ausgeführt werden:

systemctl list-unit-files --type=service --state=enabled

Sind Sie mit dem aktivierten Zustand verwechselt? Das ist normal. Viele neue Benutzer verwechseln einen aktivierten Systemdienst mit einem laufenden Dienst.

Ein aktivierter systemd-Dienst bedeutet jedoch, dass der Dienst automatisch aktiviert wird, wenn das System hochfährt.

UNIT FILE                                  STATE   VENDOR PRESET
accounts-daemon.service                    enabled enabled      
anacron.service                            enabled enabled      
apparmor.service                           enabled enabled      
[email protected]                            enabled enabled      
avahi-daemon.service                       enabled enabled      
binfmt-support.service                     enabled enabled      
bluetooth.service                          enabled enabled      
console-setup.service                      enabled enabled      
containerd.service                         enabled enabled      
cron.service                               enabled enabled      
cups-browsed.service                       enabled enabled      
cups.service                               enabled enabled      
dbus-fi.w1.wpa_supplicant1.service         enabled enabled      

Bemerken Sie das Vendor Preset? Es war auch im vorherigen Beispiel vorhanden.

Herstellervoreinstellung definiert das automatische Verhalten der systemd-Einheit, wenn ein Programm installiert wird.

Angenommen, Sie haben ein neues Programm XYZ installiert. Dieses XYZ hat einen systemd-Dienst namens xyz.service mit aktivierter Herstellervoreinstellung. Das bedeutet, dass nach der Installation des Programms beim Booten des Systems dieser xyz.service automatisch beim Booten aktiviert wird.

Wenn die Herstellervoreinstellung deaktiviert ist, müssen Sie sie manuell aktivieren. Sobald es aktiviert ist, startet es automatisch bei jedem Start.

sudo systemd enable xyz.service

Den Status eines bestimmten systemd-Dienstes anzeigen

Bisher haben Sie verschiedene Möglichkeiten zum Auflisten von Diensten kennengelernt. Aber nichts konzentriert sich auf einen einzelnen Dienst.

Mit dem status erhalten Sie detaillierte Informationen zu einem systemd-Dienst Unterbefehl von systemctl. Tab-Vervollständigung funktioniert mit diesem Befehl.

systemctl status <service_name>

Hier ist ein Beispiel mit dem Netzwerk-Manager-Dienst:

[email protected]:~$ systemctl status NetworkManager.service 
● NetworkManager.service - Network Manager
     Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-07-23 08:12:44 IST; 3h 8min ago
       Docs: man:NetworkManager(8)
   Main PID: 711 (NetworkManager)
      Tasks: 3 (limit: 9157)
     Memory: 13.6M
     CGroup: /system.slice/NetworkManager.service
             └─711 /usr/sbin/NetworkManager --no-daemon

Jul 23 08:12:50 itsfoss NetworkManager[711]: <info>  [1595472170.7159] device (wlp58s0): Activation: successful, device activated.
Jul 23 08:12:50 itsfoss NetworkManager[711]: <info>  [1595472170.7179] manager: startup complete
Jul 23 08:12:51 itsfoss NetworkManager[711]: <info>  [1595472171.5592] manager: NetworkManager state is now CONNECTED_GLOBAL
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info>  [1595472172.7973] dhcp6 (wlp58s0): activation: beginning transaction (timeout in 45 seconds)
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info>  [1595472172.8017] policy: set 'JioFi3_215810' (wlp58s0) as default for IPv6 routing and DNS
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info>  [1595472172.8058] dhcp6 (wlp58s0): option dhcp6_name_servers   => 'fe80::a8dc:79ff:fe1b:57fe'
Jul 23 08:12:52 itsfoss NetworkManager[711]: <info>  [1595472172.8059] dhcp6 (wlp58s0): state changed unknown -> bound
Jul 23 08:12:59 itsfoss NetworkManager[711]: <info>  [1595472179.9251] agent-manager: agent[bdd71d4a66098713,:1.84/org.gnome.Shell.NetworkAgent/1>
Jul 23 11:18:10 itsfoss NetworkManager[711]: <info>  [1595483290.7874] manager: NetworkManager state is now CONNECTED_SITE
Jul 23 11:18:11 itsfoss NetworkManager[711]: <info>  [1595483291.5893] manager: NetworkManager state is now CONNECTED_GLOBAL

Sie können sehen, dass es viele nützliche Informationen wie den Status des Dienstes, die Manpage des Dienstes, den verbrauchten Speicher, die Prozess-ID usw. liefert. Es zeigt auch die letzten paar Journald-Protokolle für den Dienst.

Wenn Sie in einem Shell-Skript überprüfen möchten, ob ein Dienst aktiv ist oder nicht, können Sie den is-active verwenden Unterbefehl. Der Ausgang ist 0 für aktiv.

systemctl is-active application.service

Wenn Sie auf ähnliche Weise überprüfen möchten, ob ein Dienst aktiviert ist (so eingestellt ist, dass er beim Booten automatisch gestartet wird), können Sie is-enabled verwenden Unterbefehl. Ausgang ist 0 für aktivierten Dienst.

systemctl is-enabled application.service

Schlussfolgerung

Ich denke, Sie haben jetzt ein besseres Verständnis für die Auflistung von systemd-Diensten. Ich hoffe, Sie haben ein paar neue Dinge über systemd und den systemctl-Befehl gelernt.

Zögern Sie nicht, Ihr Feedback, Ihre Fragen oder Vorschläge im Kommentarbereich zu hinterlassen.


Linux
  1. So verwalten und listen Sie Dienste in Linux auf

  2. So verwalten Sie Systemd-Dienste mit Systemctl unter Linux

  3. Hinzufügen eines neuen Dienstes zu Linux systemd

  4. Linux – Wie bekommt man mit Systemd weniger Ttys?

  5. Wie verhindere ich, dass Linux-Dienste automatisch gestartet werden?

So listen Sie Startdienste beim Booten in Linux auf

So listen Sie installierte Pakete in Linux auf

So listen Sie Festplattenpartitionen unter Linux auf

So starten Sie Netzwerkdienste unter Linux neu

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

So listen Sie Dienste unter Linux auf