¿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

la estafa más habitual de España

Así es la estafa más habitual: WhatsApp, Telegram, oferta de empleo y un troyano…

Está arrasando. La estafa más habitual que circula por España lo tiene todo: ingeniería social, plataformas de mensajería, el señuelo del un empleo irreal y un troyano que tienes cuando ya has caído. Los expertos en ciberseguridad como Secure&IT se han hecho eco de multitud de robos de estas características. Describiendo la estafa más habitual

planificar un viaje con ChatGPT

Planificar un viaje con ChatGPT: todo lo que debes saber

Planificar un viaje con ChatGPT es una de las muchas cosas que se pueden hacer con esta popular herramienta. Destinos, restaurantes, precios, parkings donde dejar el coche, itinerarios… Se puede hacer de todo con la IA, pero hasta cierto punto. Y es que hay límites y riesgos que hay que tener en cuenta. Lo analizamos

nuevas funciones de Apple Intelligence

Traducción en Vivo y las nuevas funciones que llegan a Apple Intelligence

Apple ha anunciado nuevas funciones de Apple Intelligence que mejoran la experiencia del usuario en iPhone, iPad, Mac, Apple Watch y Apple Vision Pro. Es decir todo el ecosistema de Apple. Entre lo más destacado, llega Traducción en Vivo, si bien también hablaremos de otras mejoras en inteligencia visual o las novedades en Image Playground

webs con accesibilidad digital

Webs con accesibilidad: problema y asignatura pendiente en España

Aunque pueda parecer perfecta, Internet tiene carencias, especialmente para las personas con discapacidad. En lo que comprende a España, el país tiene una asignatura pendiente en la inclusión digital, puesto que las webs con accesibilidad digital son minoría. Este ha sido del tema de debate de la jornada “Accesibilidad Digital: Un futuro inclusivo”, organizada por