Was ist das Ziel, der Service und der Socket von systemd?

35

Ich weiß, dass alle von ihnen Unit-Dateien sind, aber ich kann die spezielle Bedeutung von ihnen nicht verstehen. Ich denke, dass Ziele Daemons und Sockets ähnlich sind wie Socket (IP + Port), aber auch mit Inode-Nummern. Könnte jemand sie bitte in einfachen Worten erklären?

Drpaneas
quelle
3
Die systemd manSeiten sind vorbildlich: haben Sie sich angesehen man systemd.{service,socket,target}?
Jasonwryan
@ jasonwryan Eigentlich habe ich gesucht und habe nicht die vollständige Antwort. Ich starre diesen Thread an, damit ich auch lernen kann. Ich weiß, was ein Service ist, eine Steckdose, habe aber eine Lücke, wenn es um das Ziel geht. Ich recherchiere noch und beantworte die Frage, ob es mir klar genug wird.
LD James

Antworten:

40

Serviceeinheiten:

A unit configuration file whose name ends in .service encodes
information about a process controlled and supervised by systemd.

- Systemdienst (5)

Systemd-Serviceeinheiten sind die Einheiten, die Programme und Daemons tatsächlich ausführen und verfolgen. Abhängigkeiten werden verwendet, um sicherzustellen, dass die Services in der richtigen Reihenfolge gestartet werden. Sie sind die am häufigsten verwendeten Gerätetypen.

Steckdoseneinheiten:

A unit configuration file whose name ends in ".socket" encodes
information about an IPC or network socket or a file system FIFO
controlled and supervised by systemd, for socket-based activation.

- systemd.socket (5)

Socket-Einheiten hingegen starten keine eigenen Daemons. Stattdessen sitzen sie nur da und lauschen einer IP-Adresse und einem Port oder einem UNIX-Domain-Socket. Wenn eine Verbindung hergestellt wird, wird der Daemon gestartet, für den der Socket bestimmt ist, und die Verbindung wird an ihn übergeben.

Dies ist nützlich, um sicherzustellen, dass große Daemons, die viel Ressourcen beanspruchen, aber nur selten verwendet werden, nicht ständig ausgeführt werden und Ressourcen beanspruchen, sondern nur bei Bedarf gestartet werden.

Zieleinheiten:

A unit configuration file whose name ends in ".target" encodes
information about a target unit of systemd, which is used for grouping
units and as well-known synchronization points during start-up.

- systemd.target (5)

Ziele werden zum Gruppieren und Ordnen von Einheiten verwendet. Sie entsprechen in etwa Runleveln, da auf unterschiedlichen Zielen unterschiedliche Dienste, Sockets und andere Einheiten gestartet werden. Im Gegensatz zu Runlevels sind sie viel freier und Sie können leicht Ihre eigenen Ziele für die Bestellung von Einheiten erstellen, und Ziele haben Abhängigkeiten untereinander.

Zum Beispiel multi-user.targetsind die meisten Daemons unter gruppiert und basic.targetmüssen aktiviert werden, was bedeutet, dass alle unter gruppierten Dienste basic.targetvor denen in gestartet werden multi-user.target.

kyrias
quelle
11

Die Dokumentation für systemd eignet sich hervorragend für ein so relativ neues Projekt. Beginnen Sie mit Zielen von man systemd.target:

Zieleinheiten bieten keine zusätzlichen Funktionen zusätzlich zu den allgemeinen Funktionen, die von Einheiten bereitgestellt werden. Sie dienen lediglich zum Gruppieren von Einheiten über Abhängigkeiten (nützlich als Startziele) und zum Festlegen standardisierter Namen für Synchronisationspunkte, die in Abhängigkeiten zwischen Einheiten verwendet werden. Zieleinheiten sind unter anderem ein flexiblerer Ersatz für SysV-Runlevel im klassischen SysV-Init-System.

Diese "Gruppen von Einheiten" decken eine Reihe verschiedener Funktionalitäten ab, von basic.targetdenen im Wesentlichen das Hochfahren des Systems bis hin zu allen Dbus-, Gettys-, Mount-Punkten-, Swap- und Timern-Funktionen umfasst sind. Die vollständige Liste sehen Sie mit man systemd.special.

Servicedateien sind die Basiseinheiten für die Ausführung von Prozessen, die von systemd gesteuert werden. Wiederum von man systemd.service:

Eine Einheitenkonfigurationsdatei, deren Name auf .service endet, codiert Informationen zu einem Prozess, der von systemd gesteuert und überwacht wird.

Dies sind die Daemons, die gestartet, gestoppt, neu gestartet und neu geladen werden können.

Schließlich Steckdosen , von man systemd.socket:

Eine Einheitenkonfigurationsdatei, deren Name auf ".socket" endet, codiert Informationen zu einem IPC- oder Netzwerk-Socket oder einem von systemd gesteuerten und überwachten Dateisystem-FIFO für die Aktivierung auf Socket-Basis.

Diese decken einen Socket im Dateisystem oder im Internet sowie klassische FIFOs als Transport ab. Jede Socket-Einheit verfügt über eine passende Service-Einheit, die gestartet wird, wenn die erste Verbindung auf dem Socket oder FIFO eingeht.

Zusätzlich zu den manSeiten lohnt es sich, Lennarts Reihe von Blogposts zu lesen, systemd for Administrators , die einen detaillierten Einblick in die Architektur und Implementierung von systemd bietet (derzeit gibt es 20 Posts in der Reihe).

jasonwryan
quelle