Se ha preparado un lanzamiento significativo del gestor de servicios s6-rc 0.5.3.0, diseñado para gestionar el inicio de scripts de inicialización y servicios teniendo en cuenta sus dependencias. La herramienta s6-rc puede utilizarse tanto en sistemas de inicialización como para organizar el inicio de servicios arbitrarios en relación con eventos que reflejan cambios en el estado del sistema. Se proporciona un seguimiento completo del árbol de dependencias y un inicio o detención automática de servicios para alcanzar el estado deseado. El código está escrito en C y se distribuye bajo la licencia ISC.
El gestor de servicios s6-rc, que puede considerarse un análogo de sysv-rc o OpenRC, incluye un conjunto de utilidades para iniciar y detener procesos en ejecución prolongada (demonios) o scripts de inicialización que terminen de inmediato. Durante su funcionamiento, se tienen en cuenta las dependencias entre componentes, asegurando el inicio paralelo de scripts y servicios que no se intersequen, y garantizando que la secuencia de ejecución de scripts sea consistente en diferentes inicios. Todos los cambios de estado se manejan teniendo en cuenta las dependencias, asegurando que no se rompan (por ejemplo, al iniciar un servicio, se activarán automáticamente las dependencias necesarias para su funcionamiento, y al detenerlo, se detendrán también los servicios dependientes).
En lugar de niveles de inicio (runlevel), s6-rc propone un concepto más universal de conjuntos (bundles), que permite agrupar servicios según criterios arbitrarios y tareas a resolver. Para mejorar la eficiencia laboral se utiliza una base de datos de dependencias compilada, creada por la utilidad s6-rc-compile a partir del contenido de los directorios con archivos para iniciar/detener servicios. Se ofrecen utilidades s6-rc-db y s6-rc-update para la manipulación y análisis de la base de datos. El sistema es compatible con scripts de inicialización compatibles con sysv-init y puede importar información sobre dependencias de sysv-rc o OpenRC.
Entre las ventajas de s6-rc se destaca su implementación compacta, que no contiene nada innecesario, excepto los componentes para resolver tareas directas, y que consume recursos mínimos. A diferencia de otros gestores de servicios, s6-rc admite la construcción anticipada (en modo offline) de un grafo de dependencias para el conjunto de servicios existente, lo que permite realizar un análisis de dependencias intensivo en recursos de forma separada, en lugar de durante la carga o el cambio de estado. Además, el sistema no es monolítico y se divide en una serie de módulos individuales y reemplazables, cada uno de los cuales, de acuerdo con la filosofía Unix, resuelve solo una tarea específica.
En combinación con las utilidades de s6 que rastrean el trabajo de los procesos (análoga a daemontools y runit), la herramienta permite controlar simultáneamente la operación de servicios de larga duración, por ejemplo, reiniciándolos en caso de finalizaciones inesperadas, y garantizar la ejecución de una secuencia de comandos de forma reproducible, que se repite en diferentes ejecuciones. También se admiten funcionalidades como la activación de un servicio al acceder al socket (iniciar el manejador al acceder al puerto de red), el registro de eventos del proceso (reemplazo de syslogd) y la concesión controlada de privilegios adicionales (análoga a sudo).
También está disponible el lanzamiento del paquete s6-linux-init 1.0.7.0, que ofrece una implementación del proceso init para construir sistemas de inicialización listos para sistemas operativos basados en el núcleo Linux, donde se utilizan las utilidades s6 y s6-rc para gestionar servicios y scripts de inicialización. Sin embargo, s6 y s6-rc no están vinculados a s6-linux-init y pueden utilizarse, si se desea, con cualquier sistema de inicialización.
Además, el proyecto proporciona:
- s6-networking — conjunto de utilidades para crear servicios de red, similar a ucspi.
- s6-frontend — envoltura para recrear la funcionalidad de daemontools y runit sobre s6.
- s6-portable-utils — conjunto de utilidades típicas de Unix, como cut, chmod, ls, sort y grep, optimizadas para consumir mínimos recursos y distribuidas bajo la licencia ISC.
- s6-linux-utils — conjunto de utilidades vinculadas a Linux, como chroot, freeramdisk, logwatch, mount y swapon.
- s6-dns — conjunto de bibliotecas cliente y utilidades, que reemplazan las típicas utilidades DNS de BIND y djbdns.
En la nueva versión de s6-rc, la utilidad s6-rc-compile ha implementado la lectura de datos sobre dependencias y conjuntos de servicios desde directorios, en lugar de archivos. El uso de directorios simplifica la adición de servicios a la base de datos de información sobre dependencias al instalar programas a través del gestor de paquetes, ya que permite prescindir de modificaciones en los archivos. Se ha mantenido el soporte para el antiguo formato basado en archivos para garantizar la compatibilidad. En la nueva versión de s6-linux-init, se ha agregado la opción «-S» a la utilidad s6-linux-init-maker para sincronizar datos en contenedores.
Fuente: opennet.ru
