Was sind das Ziel, der Dienst und der Socket von systemd?

Was sind das Ziel, der Dienst und der Socket von systemd?

Ich weiß, dass es sich bei allen um Unit-Dateien handelt, aber ich verstehe ihre spezielle Bedeutung nicht. Ich denke, dass Ziele Daemons ähneln und Sockets dasselbe sind wie Sockets (IP + Port), aber auch mit Inode-Nummern. Kann das bitte jemand in einfachen Worten erklären?

Antwort1

Serviceeinheiten:

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

systemd.service(5)

Systemd-Diensteinheiten sind die Einheiten, die tatsächlich Programme und Daemons ausführen und verfolgen. Abhängigkeiten werden verwendet, um sicherzustellen, dass Dienste in der richtigen Reihenfolge gestartet werden. Dies ist der am häufigsten verwendete Einheitentyp.

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 Daemons nicht selbst. Stattdessen sitzen sie einfach da und lauschen auf einer IP-Adresse und einem Port oder einem UNIX-Domain-Socket, und wenn sich etwas damit verbindet, wird der Daemon, für den der Socket bestimmt ist, gestartet und die Verbindung wird an ihn übergeben.

Dies ist nützlich, um sicherzustellen, dass große Daemons, die viele Ressourcen beanspruchen, aber 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 den Runlevels, da auf verschiedenen Zielen verschiedene Dienste, Sockets und andere Einheiten gestartet werden. Im Gegensatz zu Runlevels sind sie viel freier gestaltet und Sie können problemlos Ihre eigenen Ziele zum Ordnen von Einheiten erstellen. Außerdem sind die Ziele untereinander abhängig.

Beispielsweise multi-user.targetist dies, unter der die meisten Daemons gruppiert sind, und es muss basic.targetaktiviert werden, was bedeutet, dass alle unter gruppierten Dienste basic.targetvor denen in gestartet werden multi-user.target.

Antwort2

Die Dokumentation für systemd ist für ein so relativ neues Projekt ausgezeichnet. Zunächst einmalZiele, aus man systemd.target:

Zieleinheiten bieten keine zusätzlichen Funktionen zusätzlich zu der allgemeinen Funktionalität, die Einheiten bieten. Sie dienen lediglich dazu, Einheiten über Abhängigkeiten zu gruppieren (nützlich als Startziele) und standardisierte Namen für Synchronisierungspunkte festzulegen, die in Abhängigkeiten zwischen Einheiten verwendet werden. Unter anderem sind Zieleinheiten ein flexiblerer Ersatz für SysV-Runlevel im klassischen SysV-Init-System.

Diese „Einheitengruppen“ decken eine Reihe verschiedener Funktionen ab, von basic.targetdenen im Wesentlichen der Systemstart bis hin zu allem von Dbus, Gettys, Einhängepunkten bis hin zu Swap und Timern reicht. Sie können die vollständige Liste mit sehen man systemd.special.

ServiceDateien sind die Basiseinheiten für laufende Prozesse, die von systemd gesteuert werden. Nochmals man systemd.service:

Eine Unit-Konfigurationsdatei, deren Name auf .service endet, kodiert Informationen über einen von systemd gesteuerten und überwachten Prozess.

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

Endlich,Steckdosen, aus man systemd.socket:

Eine Unit-Konfigurationsdatei, deren Name auf „.socket“ endet, kodiert Informationen über einen IPC- oder Netzwerk-Socket oder ein von systemd gesteuertes und überwachtes Dateisystem-FIFO zur Socket-basierten Aktivierung.

Dies umfasst einen Socket im Dateisystem oder im Internet, sowie klassische FIFOs als Transportmittel. Zu jeder Socket-Unit gibt es eine zugehörige Service-Unit, die gestartet wird, wenn die erste Verbindung am Socket oder FIFO eingeht.

Zusätzlich zu den manSeiten lohnt es sich, Lennarts Blog-Beiträge zu lesen,systemd für Administratoren, das einen detaillierten Einblick in die Architektur und Implementierung von systemd bietet (derzeit umfasst die Reihe 20 Beiträge).

verwandte Informationen