[LINUX] Ich möchte systemd grob verstehen

Umgebung

OS: Manjaro 19.1 (sicherlich)

systemd konzeptionell

systemd ist der erste Daemon-Prozess (PID: 1), der auf einem Linux-System gestartet wird. Startet andere Prozesse und wird zum Vorgängerprozess aller Prozesse. Es hat auch den Zweck, andere Daemon-Prozesse zu verwalten (daher).

systemctl Befehl

Der Befehl systemctl wird hauptsächlich verwendet, um systemd zu untersuchen und zu manipulieren.

Wenn Sie den Befehl systemctl ausführen, wird eine Liste der Einheiten angezeigt (siehe unten).

$ systemctl                  
UNIT                         LOAD   ACTIVE SUB     DESCRIPTION
sys-module-fuse.device       loaded active plugged /sys/module/fuse
-.mount                      loaded active mounted Root Mount
boot-efi.mount               loaded active mounted /boot/efi
systemd-journald.service     loaded active running Journal Service
systemd-logind.service       loaded active running Login Service
[email protected]            loaded failed failed  User Manager for UID 1000
...

Laut Manpage zeigt der Befehl systemctl (= Befehl systemctl list-unit`)" die Liste der Einheiten an, die systemd im Speicher hält ".

Was ist eine Einheit?

Was ist eine Einheit?

Mit anderen Worten, es ist eine Objekteinheit, die von systemd verwaltet wird.

Gerät bedienen

Geben Sie beispielsweise die Einheit wie unten gezeigt an und überprüfen Sie ihren Status.

$ systemctl status bluetooth.service

Der obige bluetooth.service ist eine Einheit.


Sobald Sie einen Überblick bekommen.

Das Gerät scheint zum Beispiel Service (.service), Einhängepunkt ( .mount), Gerät (.device), Socket ( .socket) zu sein. (Ich verstehe hier nicht im Detail.)

Der vollständige Name der Einheit ist erforderlich, wenn der Befehl systemctl verwendet wird. Mit anderen Worten, das ist der vorherige "bluetooth.service".

Es gibt jedoch auch Regeln, nach denen Sie Abkürzungen verwenden können. Drei.


Kehren Sie erneut zum vorherigen Befehl zurück. Das Ausgabeergebnis ist wie folgt.

$ systemctl status bluetooth.service
● bluetooth.service - Bluetooth service
   Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2017-01-04 13:54:04 EST; 1 weeks 0 days ago
     Docs: man:bluetoothd(8)
 Main PID: 930 (bluetoothd)
   Status: "Running"
    Tasks: 1
   Memory: 648.0K
      CPU: 435ms
   CGroup: /system.slice/bluetooth.service
           └─930 /usr/lib/bluetooth/bluetoothd

Jan 12 10:46:45 example.com bluetoothd[8900]: Not enough free handles to register service
Jan 12 10:46:45 example.com bluetoothd[8900]: Current Time Service could not be registered
Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output error (5)

Die geladene Zeile zeigt "geladen" an, wenn das Gerät in den Speicher geladen ist. Andere Werte sind "Fehler", "Nicht gefunden", "Schlechte Einstellung", "Maskiert". Außerdem werden der Pfad der Einheitendatei und ob sie derzeit aktiviert ist (ob sie beim Booten gestartet wird) in Klammern angezeigt.

unit file

Hier kommt die Einheitendatei. Aus dem vorherigen Ausgabeergebnis geht hervor, dass bluetooth.service in /usr/lib/systemd/system/bluetooth.service definiert ist. (Wenn Sie sich die Datei tatsächlich ansehen, ist der Inhalt unerwartet einfach.)

Was die Einheitendatei betrifft, scheint es eine Manpage zu geben, werfen Sie also einen kurzen Blick darauf. (systemd.unit (5)) Es scheint, dass es verschiedene Richtlinien gibt, die aus mehreren Abschnitten bestehen. Diese definieren wahrscheinlich die Einheit.

Außerdem befand sich / usr / lib / systemd / system / * an der Stelle namens System Unit Search Path. Es scheint, dass die Unit-Datei von bluetoooth.service unit in diesem Verzeichnis durchsucht wurde.

Wie auch immer, ich fand heraus, dass eine Einheitendatei mit demselben Namen wie die Einheit in einem bestimmten Verzeichnis abgelegt wurde und die Einheit in dieser Datei definiert wurde.

Spezifischer Befehl von systemctl

Nachdem ich herausgefunden habe, wie die Einheit von systemd verwaltet wird, werfen wir einen Blick auf bestimmte Befehle.

systemctl status <unit>

Der Ausführungsstatus, der Dateipfad der Einheit, die PID, das letzte Protokoll usw. werden angezeigt.

systemctl start <unit>

Startet sofort.

systemctl stop <unit>

Sofort aufhören.

systemctl enabled <unit>

Zum Aktivieren einstellen. (Zum Starten beim Start einstellen.)

Zusammenfassung

systemd betrachtet die Einheitendatei in einem bestimmten Verzeichnis und verwaltet die Betriebseinheit Einheit. Diese können vom Benutzer mit dem Befehl systemctl verwaltet / bearbeitet werden.

Lassen Sie uns spielen, indem wir sehen, welche Art von Einheit funktioniert, und den Status überprüfen.

Referenz

systemctl manpage

Arch Linux wiki https://wiki.archlinux.org/index.php/Systemd#Using_units

Understanding Systemd Units and Unit Files https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

Wikipedia https://en.wikipedia.org/wiki/Systemd

Recommended Posts

Ich möchte systemd grob verstehen
Ich möchte systemd nach Zeitzone verwalten! !!
Ich möchte SUDOKU lösen
Ich möchte UMAP (Engineering) stärker verstehen als t-SNE
Selbst Anfänger möchten sagen "Ich verstehe Python voll und ganz"
Ich möchte die Grundlagen von Bokeh vollständig verstehen
Ich möchte Bilder kratzen und trainieren
Ich möchte ○○ mit Pandas machen
Ich möchte Yolos Anmerkung kopieren
Ich möchte mit Python debuggen
Ich möchte Spyder an die Taskleiste anheften
Ich möchte Objekte mit OpenCV erkennen
Ich möchte kühl auf die Konsole ausgeben
Ich möchte in der Einschlussnotation drucken
Ich möchte sie alle zusammen kratzen.
Ich möchte mit dem Reim Teil1 umgehen
Ich möchte wissen, wie LINUX funktioniert!
Ich möchte einen Blog mit Jupyter Notebook schreiben
Ich möchte mit dem Reim part3 umgehen
Ich möchte ein Glas aus Python verwenden
Ich möchte eine Python-Umgebung erstellen
Ich möchte Linux auf dem Mac verwenden
Ich möchte eine Pip-Installation mit PythonAnywhere durchführen
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Ich möchte IPython Qt Console verwenden
Ich möchte den Fortschrittsbalken anzeigen
Ich möchte ein Automatisierungsprogramm erstellen!
Ich möchte Matplotlib in PySimpleGUI einbetten
Ich möchte mit dem Reim part2 umgehen
Ich möchte Android-Apps auf Android entwickeln
Ich möchte, dass CAPTCHA HIWAI-Wörter sagt
Ich möchte mit dem Reim part5 umgehen
Ich möchte mit dem Reim part4 umgehen
Ich möchte Matplotlib zu einem dunklen Thema machen
Ich möchte aus verschiedenen Sprachen eine Verbindung zu PostgreSQL herstellen
Ich möchte Dunnetts Test in Python machen
Ich möchte an eine Wiederholung denken können
Ich möchte einfach ein Rauschmodell erstellen
Ich möchte MATLAB feval mit Python verwenden
Ich möchte einen DataFrame in MSSQL einfügen
Ich möchte mit Python ein Fenster erstellen
Wie auch immer, ich möchte JSON-Daten einfach überprüfen
Ich möchte mit Python eine E-Mail von Google Mail senden.
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 1/3
Ich möchte datetime.datetime.now () auch mit pytest verspotten!
Ich möchte mehrere Bilder mit matplotlib anzeigen.
Ich möchte 100 Datenwissenschaften mit Colaboratory schlagen
Ich möchte ein Spiel mit Python machen
Ich möchte CSV-Dateien mit Vega-Lite visualisieren!
Ich möchte mit dem Reim part7 (BOW) umgehen
Ich möchte OREMO mit setParam sein!
Ich möchte keinen Codierungstest machen
Ich möchte DB-Informationen in einer Liste speichern
Ich möchte verschachtelte Dicts in Python zusammenführen
Ich möchte Passungen aus meinem Kopf machen
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich möchte die Daten von League of Legends ③ erhalten