¿Conoce el Comando Init de Linux?

¿Conoce el Comando Init de Linux?

VALORACIÓN DEL ARTÍCULO:
5/5


Init es el padre de todos los procesos de Linux. Es el primer proceso que se inicia cuando un ordenador se inicia y se ejecuta hasta que el sistema se apaga. Es el antepasado de todos los demás procesos.

Su función principal es crear procesos a partir de un script almacenado en el fichero /etc/inittab. Este archivo usualmente almacena entradas que causan que Init genere gettys en cada línea en la que los usuarios pueden ingresar. También controla los procesos autónomos requeridos por cualquier sistema en particular.

Índice de contenidos

Niveles de ejecución

Un runlevel es una configuración de software del sistema que permite ejecutar sólo un grupo seleccionado de procesos. Los procesos generados por Init para cada uno de estos niveles de ejecución se definen en el fichero /etc/inittab. Init puede estar en uno de los ocho niveles de ejecución: 0 a 6 y S o s. El nivel de ejecución se cambia haciendo que un usuario privilegiado ejecute Telinit, que envía las señales apropiadas a Init, diciéndole a qué nivel de ejecución cambiar.

Los niveles de ejecución 0, 1 y 6 están reservados. El nivel de ejecución 0 se utiliza para detener el sistema, el nivel de ejecución 6 se utiliza para reiniciar el sistema y el nivel de ejecución 1 se utiliza para poner el sistema en modo monousuario. El nivel de ejecución S no está destinado a ser utilizado directamente sino por los scripts que se ejecutan al entrar en el nivel de ejecución 1.

Los niveles de ejecución 7 a 9 también son válidos, aunque no están bien documentados porque las variantes «tradicionales» de Unix no los utilizan. Los niveles S y s son los mismos. Internamente, son alias para el mismo nivel de ejecución.

Arranque

Después de invocar Init como último paso de la secuencia de arranque del núcleo, busca el fichero /etc/inittab para ver si hay una entrada del tipo initdefault. La entrada por defecto inicial determina el nivel de ejecución inicial del sistema. Si no hay tal entrada (o no hay /etc/inittab en absoluto), se debe introducir un nivel de ejecución en la consola del sistema.

El nivel de ejecución S o s lleva el sistema al modo monousuario y no requiere un fichero /etc/inittab. En modo monousuario, se abre un intérprete de comandos raíz en /dev/console.

Al entrar en el modo monousuario, init lee los estados ioctl de la consola desde /etc/ioctl.save. Si este archivo no existe, init inicializa la línea a 9600 baudios y con los ajustes de CLOCAL. Cuando init abandona el modo monousuario, almacena la configuración ioctl de la consola en este archivo para poder reutilizarla en la siguiente sesión monousuario.

Al entrar en un modo multiusuario por primera vez, Init realiza las entradas boot y bootwait para permitir que los sistemas de archivos se monten antes de que los usuarios puedan iniciar sesión. A continuación, se procesan todas las entradas que coinciden con el nivel de ejecución.

Al iniciar un nuevo proceso, Init comprueba primero si el fichero /etc/initscript existe. Si lo hace, utiliza este script para iniciar el proceso.

Cada vez que un hijo termina, Init registra el hecho y la razón por la que murió en /var/run/utmp y/var/log/wtmp, siempre que existan estos archivos.

Cambio de niveles de ejecución

Después de desovar todos los procesos especificados, Init espera a que uno de sus procesos descendientes muera, una señal de falla de energía o hasta que Telinit lo señale para cambiar el nivel de ejecución del sistema. Cuando ocurre una de estas tres condiciones, se vuelve a examinar el archivo /etc/inittab. Se pueden añadir nuevas entradas a este archivo en cualquier momento. Sin embargo, init todavía espera a que ocurra una de las tres condiciones anteriores. Para proporcionar una respuesta instantánea, el comando Q o q de Telinit puede despertar a Init para reexaminar el archivo /etc/inittab.

Si Init no está en modo monousuario y recibe una señal de fallo de alimentación (SIGPWR), lee el fichero /etc/powerstatus. A continuación, inicia un comando basado en el contenido de este archivo:

  • F(AIL) : La alimentación está fallando, el SAI proporciona la alimentación. Ejecute las entradas de espera de energía y fallo de energía.
  • O(K) : La energía ha sido restaurada, ejecute las entradas de powerokwait.
  • L(OW) : La alimentación está fallando y el SAI tiene una batería baja. Ejecute las entradas de fallo de corriente.

Si /etc/powerstatus no existe o contiene algo más que las letras F, O, o L, Init se comporta como si leyera la letra F.

Se desaconseja el uso de SIGPWR y /etc/powerstatus. Cualquier persona que desee interactuar con Init debe utilizar el canal de control /dev/initctl.

Cuando se solicita a Init que cambie el nivel de ejecución, envía la señal de advertencia SIGTERM a todos los procesos que no están definidos en el nuevo nivel de ejecución. Luego espera cinco segundos antes de terminar por la fuerza estos procesos utilizando la señal SIGKILL. Tenga en cuenta que Init asume que todos estos procesos y sus descendientes permanecen en el mismo grupo de procesos que Init creó originalmente para ellos. Si algún proceso cambia su afiliación de grupo de procesos, no recibe estas señales. Estos procesos deben ser terminados por separado.

Telinit

Telinit está enlazado a /sbin/init. Toma un argumento de un carácter y señala a Init para realizar la acción apropiada. Los siguientes argumentos sirven como directivas para Telinit:

  • 0, 1, 2, 3, 4, 5, o 6 : Dígale a Init que cambie al nivel de ejecución especificado.
  • a, b, c : Dígale a Init que procese sólo aquellas entradas de archivo /etc/inittab que tengan un nivel de ejecución a, b o c.
  • Q o q : Dígale a Init que vuelva a examinar el archivo /etc/inittab.
  • S o s : Dígale a Init que cambie al modo monousuario.
  • U o u : Dígale a init que se reejecute (preservando el estado). No se vuelve a examinar el archivo /etc/inittab. El nivel de ejecución debe ser S, s, 1, 2, 3, 4 ó 5; de lo contrario, la petición se ignora silenciosamente.

Telinit también puede decirle a Init cuánto tiempo debe esperar entre el envío de las señales SIGTERM y SIGKILL. El valor por defecto es de cinco segundos, pero este valor se puede cambiar con la opción -t sec.

Telinit sólo puede ser invocado por usuarios con los privilegios apropiados.

El binario Init comprueba si es Init o Telinit mirando su ID de proceso. El verdadero ID de proceso de Init es siempre 1. De esto se deduce que en lugar de llamar a Telinit, una persona puede usar Init como un atajo.

TAMBIÉN TE INTERESA

fusión-Orange-MásMóvil

Orange y MásMóvil: arranca el nuevo gigante de las teleco en España

Orange y MásMóvil han anunciado al fin la formación de su nueva empresa conjunta, completando así el acuerdo para fusionar sus operaciones en España. Tras años de negociación, se ha completado una operación que ha dado lugar a la creación de la mayor operadora de telecomunicaciones en España. Los accionistas de ambas compañías poseen el

Instagram-Creator-Marketplace

España, a la espera del Instagram Creator Marketplace

Instagram es una de las redes sociales de mayor impacto en la población española. Desde su irrupción, la figura del influencer ha crecido enormemente en el mundo del marketing y las marcas. La herramienta Instagram Creator Marketplace puede seguir fortaleciendo a estos prescriptores, visto el potencial que empieza a tener este servicio en Estados Unidos.

avatares-Roblox

Vámonos de shopping en Roblox: Mango inaugura su primera tienda

En dinámico mundo de los juegos online, Roblox (con más de 70 millones de usuarios activos diarios) se ha destacado como una plataforma que ofrece a los participantes una experiencia única y diversa. Una de las características más populares de Roblox es su sistema de personalización de avatares, que permite a los jugadores expresar su

Snapdragon-8-Gen-3

Snapdragon 8 Gen 3, el chip de Qualcomm que empujará la IA en los móviles

La IA ha llegado al universo de los smartphones. Los últimos lanzamientos ya se anuncian con la inteligencia como protagonista. De igual manera, las grandes actualizaciones de software vienen marcada por la presencia de nuevas funciones movidas bajo los parámetros de la inteligencia artificial generativa. Al margen de los desarrollos a nivel de software, es

Ecowatch-1-de-Maxcom

Con el Ecowatch 1 no tendrás excusas para pasarte a un reloj inteligente

Sabemos que es muy difícil convencer a un perfil de personas que reniegan de un smartwatch a comprarse un reloj inteligente y quitarse el de toda la vida. No obstante, vamos a intentarlo con el Ecowatch 1 de Maxcom.  Es tarea complicada porque el gusto por los relojes suele estar muy definido en ciertas personas.