Der Standardsystem- und Service-Manager für die meisten Linux-Distributionen ist jetzt systemd
.
Dieses systemd
Prozess ersetzt die SysV init
. Es wird als erster Prozess nach dem Start des Kernels ausgeführt und ist dafür verantwortlich, den Linux-Host in den Zustand zu versetzen, in dem er verwendet werden kann. Es ist verantwortlich für das Starten und Verwalten der Dienste, das Mounten von Dateisystemen, das Verwalten von Hardware, das Generieren der Anmeldeaufforderung und vieles mehr.
Ein wesentlicher Vorteil gegenüber SysV besteht darin, dass systemd so viele Dienste wie möglich parallel startet und so die Geschwindigkeit beschleunigt Startvorgang, und das bringt den Anmeldebildschirm schneller.
Einheit
Die vom System verwalteten Elemente werden als Einheiten bezeichnet. Die Gerätedateien befinden sich in /lib/systemd/
System funktionieren.
Serviceeinheiten
Für das Service-Management sind die Zieleinheiten Service-Einheiten, die Einheitendateien mit dem Suffix von haben .Bedienung.
Verwalten von systemd-Diensten
Der Befehl zum Verwalten von systemd-Einheiten lautet systemctl
.
Starten und Stoppen von Diensten
Verwenden Sie den Befehl systemctl start, um einen systemd-Dienst zu starten:
$ sudo systemctl start name.service
Sie können das Suffix .service verlassen. So starten Sie beispielsweise den Apache-Server unter Ubuntu:
$ sudo systemctl start apache2
So stoppen Sie einen laufenden Dienst:
$ sudo systemctl stop name.service
So stoppen Sie den Apache-Server unter Ubuntu:
$ sudo systemctl stop apache2
Dienste neu starten und neu laden
Verwenden Sie den Befehl restart, um einen laufenden Dienst neu zu starten:
$ sudo systemctl restart name.service
Und wo die einzige Konfigurationsdatei zum erneuten Laden erforderlich ist
$ sudo systemctl reload name.service
Dienste aktivieren und deaktivieren
Wenn ein Dienst beim Systemstart automatisch gestartet werden soll, verwenden Sie den Befehl enable:
$ sudo systemctl enable name.service
So deaktivieren Sie den Start eines Dienstes beim Systemstart:
$ sudo systemctl disable name.service
Durch Deaktivieren wird ein laufender Dienst nicht gestoppt.
Servicestatus anzeigen
So zeigen Sie Informationen zu einem Dienst an:
$ sudo systemctl status name.service
Dies zeigt Ihnen den Status des Dienstes und die ersten Zeilen der Protokolldatei. Während der Dienst ausgeführt wird, ist die Ausgabe von
sudo systemctl status apache2
is
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Tue 2020-05-19 22:11:36 UTC; 4 days ago
Process: 116002 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
Main PID: 104165 (apache2)
Tasks: 55 (limit: 1024)
CGroup: /system.slice/apache2.service
├─104165 /usr/sbin/apache2 -k start
├─116006 /usr/sbin/apache2 -k start
└─116007 /usr/sbin/apache2 -k start
May 19 22:11:36 ubuntu18 systemd[1]: Starting The Apache HTTP Server...
May 19 22:11:36 ubuntu18 systemd[1]: Started The Apache HTTP Server.
May 21 06:25:01 ubuntu18 systemd[1]: Reloading The Apache HTTP Server.
May 21 06:25:01 ubuntu18 systemd[1]: Reloaded The Apache HTTP Server.
May 22 06:25:01 ubuntu18 systemd[1]: Reloading The Apache HTTP Server.
So überprüfen Sie, ob ein Dienst aktiv ist:
$ sudo systemctl is-active name.service
Während der Dienst apache2 ausgeführt wird, lautet die Ausgabe des Befehls systemctl is-active:
$ sudo systemctl is-active apache2
active
So überprüfen Sie, ob ein Dienst aktiviert ist:
$ sudo systemctl is-enabled name.service.
Viewing System State
Alle Befehle, die Sie bisher gesehen haben, werden zum Verwalten eines einzelnen Dienstes verwendet. Wenn Sie einen Überblick über den Systemstatus erhalten möchten, verwenden Sie die folgenden Befehle:
Alle Einheitentypen anzeigen
$ sudo systemctl -t help
Available unit types:
service
socket
target
device
mount
automount
swap
timer
path
slice
scope
Verwenden Sie List-Unit-Dateien, um alle installierten Einheiten aufzulisten
$ sudo systemctl list-unit-files
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
-.mount generated
boot-efi.mount generated
dev-hugepages.mount static
dev-mqueue.mount static
mnt.mount generated
proc-sys-fs-binfmt_misc.mount static
sys-fs-fuse-connections.mount static
sys-kernel-config.mount static
sys-kernel-debug.mount static
acpid.path enabled
apport-autoreport.path enabled
systemd-ask-password-console.path static
systemd-ask-password-plymouth.path static
systemd-ask-password-wall.path static
session-161.scope transient
accounts-daemon.service enabled
Die Ausgabe hat nur zwei Spalten Unit File und State. Der Status wird normalerweise aktiviert, deaktiviert, statisch oder maskiert.
- Statisch: Dies bedeutet, dass die Einheit nicht aktiviert werden kann, eine einmalige Aktion ausführt oder eine Abhängigkeit von einer anderen Einheit ist und nicht alleine ausgeführt werden kann.
- Maskiert: Eine als maskiert aufgeführte Einheit bedeutet, dass sie vollständig nicht gestartet werden kann, da sie mit / dev / null verknüpft ist. Dies wird als Maskieren der Einheit bezeichnet. Dies verhindert, dass der Dienst manuell oder automatisch gestartet wird.
Listen Sie alle installierten Dienste auf
Der Befehl systemctl list-unit-files mit dem Dienstfilter -t oder –type zeigt nur den Status der installierten Dienste an.
$ sudo systemctl list-unit-files -t service
UNIT FILE STATE
accounts-daemon.service enabled
acpid.service disabled
apache-htcacheclean.service disabled
apache-htcacheclean@.service disabled
apache2.service enabled
apache2@.service disabled
apparmor.service enabled
apport-autoreport.service static
apport-forward@.service static
apport.service generated
apt-daily-upgrade.service static
apt-daily.service static
atd.service enabled
autovt@.service enabled
blk-availability.service enabled
bootlogd.service masked
bootlogs.service masked
Verwenden Sie Listeneinheiten mit dem Servicefilter -t, um alle aktiven Serviceeinheiten anzuzeigen
$ sudo systemctl list-units -t service
UNIT LOAD ACTIVE SUB DESCRIPTION
accounts-daemon.service loaded active running Accounts Service
apache2.service loaded active running The Apache HTTP Server
apparmor.service loaded active exited AppArmor initialization
apport.service loaded active exited LSB: automatic crash report generation
atd.service loaded active running Deferred execution scheduler
blk-availability.service loaded active exited Availability of block devices
cloud-config.service loaded active exited Apply the settings specified in cloud-con
cloud-final.service loaded active exited Execute cloud user/final scripts
cloud-init-local.service loaded active exited Initial cloud-init job (pre-networking)
cloud-init.service loaded active exited Initial cloud-init job (metadata service
console-setup.service loaded active exited Set console font and keymap
cron.service loaded active running Regular background program processing dae
Die Ausgabe enthält die folgenden Spalten:
- EINHEIT: Der Name der systemd-Serviceeinheit
- BELASTUNG: Zeigt an, ob die Einheitendefinition richtig gelesen und geladen wurde
- ACTIVE: Beschreibt, ob das Gerät aktiv ist.
- SUB: Aktivierungsstatus des Geräts auf niedriger Ebene mit detaillierteren Informationen zum Gerät. Dies hängt vom Gerätetyp ab.
- BESCHREIBUNG: Die Beschreibung der Serviceeinheit.
Fazit
Ich hoffe, dies gibt Ihnen eine Vorstellung davon, wie Sie mit systemctl Dienste unter Linux verwalten können. Wenn Sie mehr erfahren möchten, können Sie dies überprüfen Linux Mastery Kurs.