¿Cuál es el objetivo, servicio y socket de systemd?

35

Sé que todos ellos son archivos unitarios, pero no puedo entender el significado especial de ellos. Creo que los objetivos son similares a los demonios y los zócalos son los mismos que el zócalo (puerto IP +) pero también con números de inodo. ¿Podría alguien explicarlos en palabras simples?

drpaneas
fuente
3
Las manpáginas de systemd son ejemplares: ¿has mirado man systemd.{service,socket,target}?
jasonwryan
@jasonwryan En realidad busqué y no tengo la respuesta completa. Estoy mirando este hilo para poder aprender también. Sé lo que es un servicio, un socket, pero tengo una brecha cuando se trata de target. Todavía estoy investigando y responderé la pregunta si se vuelve lo suficientemente clara para mí.
LD James

Respuestas:

40

Unidades de servicio:

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

- systemd.service (5)

Las unidades de servicio de Systemd son las unidades que realmente ejecutan y realizan un seguimiento de los programas y demonios, y las dependencias se utilizan para garantizar que los servicios se inicien en el orden correcto. Son el tipo de unidades más utilizado.

Unidades de enchufe:

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)

Las unidades de socket, por otro lado, en realidad no inician demonios por sí mismas. En cambio, simplemente se sientan allí y escuchan en una dirección IP y un puerto, o un socket de dominio UNIX, y cuando algo se conecta a él, se inicia el demonio para el que se usa el socket y se le entrega la conexión.

Esto es útil para asegurarse de que los grandes demonios que consumen muchos recursos pero que rara vez se usan no se ejecutan y consumen recursos todo el tiempo, sino que solo se inician cuando es necesario.

Unidades objetivo:

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)

Los objetivos se utilizan para agrupar y ordenar unidades. Son algo así como un equivalente aproximado de los niveles de ejecución en que en diferentes objetivos, se inician diferentes servicios, sockets y otras unidades. A diferencia de los niveles de ejecución, son mucho más libres y puedes crear fácilmente tus propios objetivos para ordenar unidades, y los objetivos tienen dependencias entre ellos.

Por ejemplo, multi-user.targetes en lo que se agrupan la mayoría de los demonios, y requiere basic.targetser activado, lo que significa que todos los servicios agrupados basic.targetse iniciarán antes que los que están en multi-user.target.

kyrias
fuente
11

La documentación para systemd es excelente para un proyecto relativamente nuevo. Para comenzar con objetivos , desde man systemd.target:

Las unidades objetivo no ofrecen ninguna funcionalidad adicional además de la funcionalidad genérica proporcionada por las unidades. Existen simplemente para agrupar unidades a través de dependencias (útiles como objetivos de arranque) y para establecer nombres estandarizados para puntos de sincronización utilizados en dependencias entre unidades. Entre otras cosas, las unidades objetivo son un reemplazo más flexible para los niveles de ejecución SysV en el sistema de inicio clásico SysV.

Estos "grupos de unidades" cubren una variedad de funcionalidades diferentes, desde las basic.targetcuales cubre esencialmente el arranque del sistema, hasta todo, desde dbus, gettys, puntos de montaje para intercambiar y temporizadores. Puedes ver la lista completa con man systemd.special.

Los archivos de servicio son las unidades básicas para ejecutar procesos controlados por systemd. De nuevo, de man systemd.service:

Un archivo de configuración de la unidad cuyo nombre termina en .service codifica información sobre un proceso controlado y supervisado por systemd.

Estos constituyen los demonios que se pueden iniciar, detener, reiniciar y volver a cargar.

Finalmente, enchufes , de man systemd.socket:

Un archivo de configuración de la unidad cuyo nombre termina en ".socket" codifica información sobre un IPC o socket de red o un sistema de archivos FIFO controlado y supervisado por systemd, para la activación basada en socket.

Estos cubren un socket en el sistema de archivos o en Internet, así como FIFOs clásicos como transporte. Cada unidad de socket tiene una unidad de servicio coincidente, que se inicia si la primera conexión entra en el socket o FIFO.

Además de las manpáginas, vale la pena leer la serie de publicaciones de blog de Lennart, systemd for Administrators , que proporciona una mirada en profundidad a la arquitectura e implementación de systemd (actualmente hay 20 publicaciones en la serie).

jasonwryan
fuente