GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo aprendí a dejar de preocuparme y amar systemd

Lo estoy intentando, Ringo. Me esfuerzo mucho por ser el pastor:Jules Winnfield [Pulp Fiction, 1994]

Durante años ha habido una guerra comunitaria en publicaciones, hilos y tweets, donde systemd está desacreditado y criticado, pero ¿realmente es tan malo? Realmente no lo sé, pero como administrador de sistemas, una de mis tareas principales es administrar y monitorear los servicios en cada uno de mis servidores, y en los últimos años, la mayoría de las distribuciones han implementado este systemd como estándar.

Los administradores de sistemas nos reinventamos constantemente, y siempre estamos investigando y aprendiendo. Entonces, vamos a poner manos a la obra systemd y desarrollar nuevas habilidades. Al contrario del tradicional init , donde el proceso de arranque es secuencial, systemd utiliza el concepto de arranque de paralelización al crear sockets para el inicio de cada servicio que lo necesita. A su vez, este comportamiento le permite interactuar con otros demonios abstrayendo esos sockets y asignando sus procesos a grupos de control. Luego, los procesos se rastrean utilizando estos grupos de control, en lugar de sus ID de proceso (PID), lo que se traduce en un proceso de inicio más simple y menos tiempo para comenzar.

En systemd , los servicios se definen en archivos unitarios con sus demonios y directivas de comportamiento. El /etc/systemd/system/ El directorio está reservado para los archivos de unidad que creas o personalizas.

Para crear un servicio, debe crearlo con el formulario:<unit_name>.<service> .

Este archivo de unidad inicia el script indicado en el ExecStart opción con el <user> establecer con User . Si el script falla o se detiene, se intentará reiniciar como se indica en el Restart opción. La StandardOutput y StandardError Las opciones aseguran que la salida estándar y de error del script se escribirá en el systemd registro.

En mi experiencia más reciente, como ejemplo del día a día de la vida real, tenía un servidor con un pequeño servicio web ejecutándose dentro de un contenedor (sí, lo sé, pero ya conoces a los clientes). Para optimizar y automatizar el servicio, creé un systemd archivo de unidad para un contenedor Podman que permite a los usuarios controlar el ciclo de vida del contenedor a través de systemctl .

Después de copiar el archivo de la unidad a /etc/systemd/system/myhttpservice.service , recarga el systemd configuración del administrador con el comando:systemctl daemon-reload . Luego, puede manejar el contenedor como un systemd -servicio gestionado:

# systemctl start myhttpservice.service ← to start the container
# systemctl status myhttpservice.service ← to check the container service status
# systemctl start myhttpservice.service ← to stop the container

La funcionalidad del contenedor no se ve afectada cuando es administrado por systemd . Incluso puede usar los comandos de Podman para controlar el estado del contenedor:

[root@server ~]# podman healthcheck run myhttpservice
healthy

Así que no te preocupes. Systemd puede ayudarlo, solo confíe en él. Si quieres saber más:

  • Conceptos básicos del sistema RHEL7
  • Desmitificando systemd
  • Hoja de referencia de systemd para Red Hat Enterprise Linux 7
  • Introducción a Podman
  • Monitoreo de la vitalidad y disponibilidad de los contenedores con Podman
  • ¿Cómo puedo controlar contenedores podman a través de systemd?

Espero que esta información te ayude.


Linux
  1. Servicios de inicio, detención y reinicio en el servidor systemd RHEL 7 Linux

  2. Cómo crear un servicio Systemd en Linux

  3. ¿Cómo escribir un script de inicio para Systemd?

  4. ¿Cómo empaquetar un servicio Systemd?

  5. Cómo iniciar un servicio systemd después del inicio de sesión del usuario y detenerlo antes de que el usuario cierre la sesión

Cómo ejecutar contenedores como servicio Systemd con Podman

Cómo iniciar, detener o reiniciar Apache

Cómo iniciar, detener o reiniciar Nginx

Cómo iniciar, detener y reiniciar servicios en Debian

Cómo iniciar, detener y reiniciar servicios en Debian 10

Cómo ejecutar Shell Script como servicio SystemD en Linux