web-dev-qa-db-fra.com

Quels sont la cible, le service et le socket de systemd?

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 les sockets sont les mêmes que les sockets (IP + port) mais aussi avec les numéros d'inode. Quelqu'un pourrait-il les expliquer en termes simples?

38
drpaneas

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 assurent le suivi des programmes et des démons, et les dépendances sont utilisées pour s'assurer que les services sont démarrés dans le bon ordre. Ce sont les types d'unités les plus couramment utilisés.

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)

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

Ceci est utile pour s'assurer que les gros démons qui prennent beaucoup de ressources mais sont rarement utilisés ne s'exécutent pas et n'utilisent pas de ressources tout le temps, mais à la place, ils ne sont démarrés qu'en cas de besoin.

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 en quelque sorte un équivalent approximatif des niveaux d'exécution dans la mesure où, sur différentes cibles, 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, multi-user.target est ce que la plupart des démons sont regroupés et nécessite basic.target à activer, ce qui signifie que tous les services regroupés sous basic.target sera démarré avant ceux de multi-user.target.

41
kyrias

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

Les unités cibles n'offrent aucune fonctionnalité supplémentaire en plus des fonctionnalités génériques fournies par les unités. Ils existent simplement pour regrouper des unités via des dépendances (utiles comme cibles de démarrage) et pour établir des noms standardisés pour les points de synchronisation utilisés dans les dépendances entre unités. Entre autres choses, les unités cibles sont un remplacement plus flexible des niveaux d'exécution SysV dans le système d'initialisation SysV classique.

Ces "groupes d'unités" couvrent un éventail de fonctionnalités différentes, de basic.target qui couvre essentiellement le démarrage du système, jusqu'à tout, de dbus, gettys, points de montage à swap et timers. Vous pouvez voir la liste complète avec man systemd.special.

Les fichiers de service sont les unités de base pour exécuter les 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 sur 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, sockets , de man systemd.socket:

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

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

En plus des pages man, il vaut la peine de lire la série de billets de blog de Lennart, systemd for Administrators , qui fournit une analyse approfondie de l'architecture et de la mise en œuvre de systemd (il sont actuellement 20 postes dans la série).

11
jasonwryan