Cómo usar el comando Init en Linux

Init se ejecuta en el momento del arranque e inicia todos los procesos en segundo plano Init es el padre de todos los procesos de Linux. Es el primer proceso que se inicia cuando se inicia una computadora y se ejecuta hasta que el sistema se apaga.

Init se ejecuta en el momento del arranque e inicia todos los procesos en segundo plano

Init es el padre de todos los procesos de Linux. Es el primer proceso que se inicia cuando se inicia una computadora 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 archivo/etc/inittab. Este archivo generalmente almacena entradas que hacen que Init genere gettys en cada línea en la que los usuarios pueden iniciar sesión. También controla procesos autónomos requeridos por cualquier sistema en particular.

Niveles de ejecución

Un nivel de ejecución es una configuración de software del sistema que permite que solo se ejecute un grupo seleccionado de procesos. Los procesos generados por Init para cada uno de estos niveles de ejecución se definen en el archivo/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 al hacer que un usuario privilegiado ejecute Telinit, que envía señales apropiadas a Init, diciéndole a qué nivel de ejecución debe cambiar.

Los niveles de ejecución 0, 1 y 6 están reservados. El nivel de ejecución 0 se usa para detener el sistema, el nivel de ejecución 6 se usa para reiniciar el sistema y el nivel de ejecución 1 se usa para poner el sistema en modo de usuario único. El nivel de ejecución S no está destinado a ser utilizado directamente, sino por los scripts que se ejecutan al ingresar 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 usan. Los niveles de ejecución S y s son iguales. Internamente, son alias para el mismo nivel de ejecución.

Arranque

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

Runlevel S o s lleva el sistema al modo de usuario único y no requiere un archivo/etc/inittab. En modo de usuario único, se abre un shell raíz en/dev/console.

Al ingresar al modo de usuario único, 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 la configuración CLOCAL. Cuando init deja el modo de usuario único, almacena la configuración de ioctl de la consola en este archivo para que pueda reutilizarlos para la próxima sesión de usuario único.

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

Al iniciar un nuevo proceso, Init primero verifica si el archivo/etc/initscript existe. Si lo hace, usa este script para iniciar el proceso.

Cada vez que un niño 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 que genera 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 le indique que cambie el nivel de ejecución del sistema. Cuando se produce una de estas tres condiciones, vuelve a examinar el archivo/etc/inittab. Se pueden agregar nuevas entradas a este archivo en cualquier momento. Sin embargo, init todavía espera que ocurra una de las tres condiciones anteriores. Para proporcionar una respuesta instantánea, el comando Telinit Q o q puede activar Init para volver a examinar el archivo/etc/inittab.

Si Init no está en modo de usuario único y recibe una señal de falla de energía (SIGPWR), lee el archivo/etc/powerstatus. Luego inicia un comando basado en el contenido de este archivo:

  • F (AIL) : la energía falla, UPS está proporcionando la energía. Ejecute las entradas de powerwait y powerfail.
  • O (K) : se restableció la alimentación, ejecute las entradas de powerokwait.
  • L (OW) : la alimentación falla y el UPS tiene poca batería. Ejecute las entradas de powerfailnow.

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 quiera interactuar con Init debe usar el canal de control/dev/initctl.

Cuando se le 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 supone 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 al grupo de procesos, no recibe estas señales. Dichos procesos deben terminarse por separado.

Telinit

Telinit está vinculado a/sbin/init.Se necesita un argumento de un carácter y le indica a Init que realice la acción adecuada. Los siguientes argumentos sirven como directivas para Telinit:

  • 0, 1, 2, 3, 4, 5 o 6 : dile a Init que cambie al nivel de ejecución especificado.
  • a, b, c : dígale a Init que procese solo aquellas entradas de archivo/etc/inittab que tengan los niveles de ejecución a, b o c.
  • Q o q : indique a Init que vuelva a examinar el archivo/etc/inittab.
  • S o s : dile a Init que cambie al modo de usuario único.
  • U o u : dile a init que se vuelva a ejecutar (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 o 5; de lo contrario, la solicitud se ignora en silencio.

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

Telinit solo puede ser invocado por usuarios con los privilegios adecuados.

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

Rate article
labsfabs.com
Add a comment