Quelle est la cible, le service et le socket de systemd?

35

Je sais que tous sont des fichiers unitaires, mais je ne comprends pas leur signification particulière. Je pense que les cibles sont similaires aux démons et que les sockets sont les mêmes que socket (IP + port), mais aussi avec des numéros d'inode. Quelqu'un pourrait-il s'il vous plaît les expliquer avec des mots simples?

drpaneas
la source
3
Les manpages systemd sont exemplaires: avez-vous regardé man systemd.{service,socket,target}?
jasonwryan
@jasonwryan En fait, j'ai regardé et je n'ai pas la réponse complète. Je regarde ce fil afin que je puisse apprendre aussi. Je sais ce qu'est un service, un socket, mais il y a un écart en matière de ciblage. Je suis toujours à la recherche et répondrai à la question si cela me semble suffisamment clair.
LD James

Réponses:

40

Unités de service:

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

- systemd.service (5)

Les unités de service Systemd sont les unités qui exécutent et suivent réellement les programmes et les démons. Des dépendances sont utilisées pour s'assurer que les services sont démarrés dans le bon ordre. Ils sont le type d'unités le plus couramment utilisé.

Unités de prise:

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)

En revanche, les unités de sockets ne démarrent pas les démons par eux-mêmes. Au lieu de cela, ils restent assis et écoutent une adresse IP et un port, ou un socket de domaine UNIX. Lorsque quelque chose s'y connecte, le démon auquel le socket est destiné est démarré et la connexion lui est transmise.

C'est utile pour s'assurer que les gros démons qui utilisent beaucoup de ressources mais qui sont rarement utilisés ne s'exécutent pas et ne prennent pas tout le temps de ressources, mais qu'ils ne sont démarrés que lorsque cela est nécessaire.

Unités cibles:

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)

Les cibles sont utilisées pour regrouper et commander des unités. Ils sont à peu près équivalents aux niveaux d'exécution en ce sens que différents objectifs, différents services, sockets et autres unités sont démarrés. Contrairement aux niveaux d'exécution, ils sont beaucoup plus libres et vous pouvez facilement créer vos propres cibles pour commander des unités, et les cibles ont des dépendances entre elles.

Par exemple, la multi-user.targetplupart des démons sont regroupés sous et doivent basic.targetêtre activés, ce qui signifie que tous les services groupés sous basic.targetseront démarrés avant ceux de multi-user.target.

Kyrias
la source
11

La documentation de systemd est excellente pour un projet relativement nouveau. Pour commencer avec des objectifs , à partir de man systemd.target:

Les unités cibles n'offrent aucune fonctionnalité supplémentaire par rapport aux fonctionnalités génériques fournies par les unités. Ils existent uniquement pour regrouper des unités via des dépendances (utiles en tant que cibles d'amorçage) et pour établir des noms normalisés pour les points de synchronisation utilisés dans les dépendances entre unités. Entre autres choses, les unités cibles constituent un remplacement plus souple des niveaux d'exécution SysV dans le système SysV init classique.

Ces "groupes d'unités" couvrent un éventail de fonctionnalités différentes, basic.targetdont celles-ci couvrent essentiellement le démarrage du système, et ce, depuis dbus, gettys, points de montage à permuter et minuteries. Vous pouvez voir la liste complète avec man systemd.special.

Les fichiers de service sont les unités de base pour l'exécution de processus contrôlés par systemd. Encore une fois, de man systemd.service:

Un fichier de configuration d'unité dont le nom se termine par .service code les informations relatives à un processus contrôlé et supervisé par systemd.

Ceux-ci constituent les démons qui peuvent être démarrés, arrêtés, redémarrés, rechargés.

Enfin, les sockets , de man systemd.socket:

Un fichier de configuration d'unité dont le nom se termine par ".socket" code les informations relatives à un socket IPC ou réseau ou à une FIFO de système de fichiers contrôlée et supervisée par systemd, pour une activation par socket.

Celles-ci couvrent une prise dans le système de fichiers ou sur Internet, ainsi que les FIFO classiques comme moyens de transport. Chaque socket a une unité de service correspondante, qui est démarrée si la première connexion arrive sur le socket ou la FIFO.

En plus des manpages, il convient de lire la série d'articles de blog de Lennart, systemd for Administrators , qui fournit un aperçu approfondi de l'architecture et de la mise en œuvre de systemd (la série compte actuellement 20 articles).

jasonwryan
la source