Un nivel de ejecución es un estado de init y de la totalidad del sistema, y define que servicios están operando. Los niveles de ejecución son identificados por números (observe la Tabla Tabla 9.1, “Números de los niveles de ejecución”). No existe aún un consenso de como utilizar los niveles de ejecución definidos para usuarios (2 a 5). Algunos administradores de sistemas utilizan niveles de ejecución para definir cuales subsistemas están trabajando, por ejemplo, si X se está ejecutando, si la red se encuentra operativa, etc. Otros, tienen siempre todos los subsistemas en ejecución, o inician y paran subsistemas individualmente sin cambiar de nivel de ejecución, debido a que los niveles de ejecución son un poco complejos para controlar sus sistemas. Puede decidir que metodología utilizar, aunque puede llegar a ser mas fácil mantener la manera en que tu distribución GNU/Linux realiza las cosas.
Tabla 9.1. Números de los niveles de ejecución
0 | Parar el sistema |
1 | Modo de usuario individual (para tareas especiales de administración). |
2-5 | Operación normal (definidas para los usuarios). |
6 | Reiniciar el sistema. |
Los niveles de ejecución se encuentran configurados en el archivo
/etc/inittab
por líneas como la siguiente:
l2:2:wait:/etc/init.d/rc 2
El primer campo es una etiqueta arbitraria, el segundo indica que la línea se
aplica al nivel de ejecución 2. El tercer campo significa que
init debe ejecutar el comando especificado en el cuarto campo
una sola vez, cuando se ingrese al nivel de ejecución. Además, indica que
init debe esperar hasta que la ejecución de dicho comando
finalice. El script de shell /etc/init.d/rc
ejecuta los
comandos necesarios para iniciar y parar servicios al ingresar al nivel de
ejecución 2.
El comando especificado en el cuarto campo, realiza todo el trabajo duro que se necesita para establecerse en un nivel de ejecución. Este comando inicia servicios que no se encuentren en ejecución, y detiene o finaliza servicios que no deban estar ejecutándose en el nuevo nivel. La especificación exacta del comando y la manera en que se encuentren configurados los niveles de ejecución dependen de la distribución GNU/Linux.
Cuando init comienza su ejecución, busca una línea en
/etc/inittab
que especifique el nivel de ejecución por
defecto:
id:2:initdefault:
Cuando el sistema inicia, puede indicarle a init que inicie
un nivel de ejecución distinto al especificado por defecto. Esto se logra
informando al kernel con el argumento de línea de comandos
single
o emergency
. Los argumentos de la
línea de comandos del kernel se pueden especificar a través de LILO, por
ejemplo. Esto permite que seleccione el modo de usuario individual o simple
(nivel de ejecución 1).
Mientras el sistema se está ejecutando, el comando
telinit puede cambiar el nivel de ejecución. Cuando el nivel
de ejecución cambia, init ejecuta el comando relevante desde
/etc/inittab
.