Linux en Español

Entender los niveles de ejecución de Linux de la manera correcta

Puede pensar en los niveles de ejecución de Linux como diferentes “modos” en los que se ejecuta el sistema operativo. Cada uno de estos modos, o niveles de ejecución, tiene su propia lista de procesos y servicios que están activados o desactivados. Desde el momento en que Linux arranca, siempre está en algún nivel de ejecución.

Este nivel de ejecución puede cambiar a medida que continúe usando su ordenador, dependiendo de qué tipo de servicios necesite el sistema operativo para acceder a ellos.


Por ejemplo, si ejecuta su máquina Linux con un interfaz gráfico de usuario necesitará un nivel de ejecución diferente al que tendría si sólo ejecutara la línea de órdenes en su sistema.

Esto se debe a que la interfaz gráfica de usuario necesitará acceso a varios servicios que la línea de comandos simplemente no tiene. Para que el sistema pueda determinar qué servicios se necesitan para ser activados (o desactivados), cambia el nivel de ejecución según sea necesario.

 

 

Importancia de los niveles de ejecución de Linux

Puede que haya usado Linux durante años sin darse cuenta de que hay diferentes niveles de ejecución. Eso es porque no es algo que la mayoría de los administradores de servidores necesiten configurar a menudo.

Sin embargo, los niveles de ejecución de Linux dan a los administradores un mayor control sobre los sistemas que gestionan.

El nivel de ejecución en el que se encuentra un sistema puede ser cambiado (lo cual veremos cómo hacerlo más adelante en el artículo), así como los servicios que se ejecutan dentro de los niveles de ejecución. Esto nos permite tener un control completo sobre los servicios a los que nuestros sistemas tienen acceso en un momento dado.


¿Cuántos niveles de ejecución existen en Linux?

Hay siete niveles de ejecución diferentes en Linux, numerados del cero al seis. Varias distribuciones pueden usar los siete niveles de ejecución de forma diferente, por lo que no es muy fácil compilar una lista definitiva de lo que hacen los niveles de ejecución.

En su lugar, necesitaría comprobar cómo funcionan los niveles de ejecución en la distribución específica que está utilizando. En su mayor parte, la lista que se muestra a continuación representa cómo las distribuciones de Linux generalmente configuran los niveles de ejecución:

Runlevel 0 apaga el sistema.

Runlevel 1 es un modo monousuario, que se utiliza para medidas de mantenimiento o administrativas. Este modo también se conoce como nivel de ejecución S (la S significa un solo usuario).

Runlevel 2 es un modo multiusuario. Este nivel de ejecución no utiliza ningún servicio de red.

Runlevel 3 es un modo multiusuario con interconexión. Este es el nivel de ejecución normal al que está acostumbrado si utiliza un sistema que no arranca en una GUI (interfaz gráfica de usuario).

Runlevel 4 no se utiliza. El usuario puede personalizar este nivel de ejecución para sus propios fines (que veremos cómo hacerlo más adelante en el artículo).

Runlevel 5 es el mismo que el nivel de ejecución 3, pero también inicia un gestor de pantalla. Este es el nivel de ejecución al que está acostumbrado si utiliza un sistema que se inicia en una GUI.

Runlevel 6reinicia el sistema.


¿Cuál es mi nivel de ejecución actual?

Puede ver su nivel de ejecución actual en la mayoría de las distribuciones con sólo escribir “nivel de ejecución” en la terminal..

Nivel de ejecución actual

Cuando ingresas el comando “runlevel”, te dará dos números diferentes. El primer número es el nivel de ejecución anterior que su sistema estaba ejecutando, y el segundo número es el nivel de ejecución actual de su sistema.

En la captura de pantalla anterior, la “N” es la abreviatura de “none”, lo que significa que el sistema no estaba en ningún nivel de ejecución diferente anteriormente. El “5” significa que nuestro sistema se encuentra actualmente en el nivel de ejecución 5.

En este ejemplo estamos ejecutando CentOS, que arrancó directamente en una interfaz gráfica, por lo que el sistema pasó directamente al nivel de ejecución 5.

¿Como Cambiar Mi Nivel de Ejecución Actual?

Puede cambiar el nivel de ejecución actual de su sistema utilizando el comando “telinit”. Por ejemplo, para cambiar al nivel de ejecución 3 en CentOS, debería escribir:


Cambiar el nivel de ejecución actual

Tenga en cuenta que usted debe ser el usuario raíz para ejecutar este comando. Tenga en cuenta que los niveles de ejecución funcionan de forma diferente en Debian y en Ubuntu – por ejemplo, Ubuntu arrancará en el nivel de ejecución 5 incluso sin iniciar una GUI.

Si sigue el ejemplo anterior, su pantalla puede quedar en blanco. Esto se debe a que se ha dejado en la – ahora vacía – tty. Sólo tienes que hacer Alt+F1 (o alguna otra tecla de función) en tu teclado para ser llevado a una terminal de trabajo.

Si usamos el comando “runlevel” de nuevo, veremos que ahora estamos en el nivel de ejecución 3, y el nivel de ejecución anterior aparece como 5 ya que acabamos de cambiarlo.

comando runlevel


Objetivos de systemd Linux vs. niveles de ejecución

En los últimos años, systemd ha venido a sustituir al antiguo sistema “System V init” (niveles de ejecución). Todavía funciona básicamente de la misma manera, pero utiliza algunos comandos nuevos y comúnmente se refiere a los “niveles de ejecución” como “objetivos” en su lugar.

Nivel de ejecución 0 = poweroff.target (nivel de ejecución 0.target)

Nivel de ejecución 1 = rescue.target (nivel de ejecución 1.target)

Nivel de ejecución 2 = multi-user.target (nivel de ejecución 2.target)

Nivel de ejecución 3 = multi-user.target (nivel de ejecución 3.target)

Nivel de ejecución 4 = multi-user.target (nivel de ejecución 4.target)

Nivel de ejecución 5 = graphical.target (nivel de ejecución 5.target)

Nivel de ejecución 6 = reboot.target (nivel de ejecución 6.target)

Continuaremos repasando systemd y los comandos que necesitará conocer a medida que este tutorial avance.

¿Como Cambiar el Nivel de Ejecución al inicio de Sesión?

Hay muchas razones por las que puede querer arrancar en un nivel de ejecución diferente. Por ejemplo, es común que los administradores de sistemas arranquen desde la línea de órdenes y sólo inicien una interfaz gráfica cuando lo consideren necesario.

Para esta funcionalidad, debería asegurarse de que su nivel de ejecución predeterminado está establecido en 3, y no en 5.

En el pasado, se requería editar el archivo /etc/inittab para definir el nivel de ejecución predeterminado en el arranque. Es posible que todavía se encuentre con que este es el caso en algunas distribuciones.

Si trabaja con un sistema operativo que no se ha actualizado durante unos años, todavía encontrará que este método es relevante para usted.


archivo inittab

En la captura de pantalla anterior, el nivel de ejecución 5 está fijado actualmente en el nivel de ejecución por defecto para la puesta en marcha.

A partir de 2016, la mayoría de las principales distribuciones de Linux han eliminado el archivo /etc/inittab, en favor de los objetivos systemd – cubriremos las diferencias más adelante en este artículo.

Puede que su sistema no tenga el archivo /etc/inittab en absoluto, o su archivo inittab puede aconsejarle que use systemd en su lugar, como en esta captura de pantalla de nuestro sistema CentOS.

systemd

Para comprobar el objetivo predeterminado actual de su sistema:


Objetivo predeterminado actual

En la captura de pantalla anterior, la respuesta del sistema es “graphical.target”. Como probablemente pueda adivinar, esto es el equivalente al nivel de ejecución 5.

Para ver los demás objetivos disponibles y los niveles de ejecución a los que están asociados, escriba:


Niveles de ejecución objetivo disponibles

Estos vínculos simbólicos nos dicen que los objetivos del sistema funcionan más o menos de la misma manera que los niveles de ejecución. Entonces, ¿cómo podemos cambiar el nivel de ejecución (o el objetivo) por defecto al inicio? Necesitamos crear un nuevo link simbólico, de esta forma:


Objetivo predeterminado

Este comando cambiará nuestro nivel de ejecución predeterminado a 3, por lo que la próxima vez que reiniciemos, nuestro sistema estará en el nivel de ejecución 3 en lugar de 5. Si quisiera un nivel de ejecución diferente, sólo tendría que sustituir el “3” del comando por un número diferente.

Como referencia, el parámetro -f de ese comando indica que el archivo de destino debe ser eliminado antes de crear el nuevo enlace. También podría eliminarlo primero con un simple comando rm.

Puede confirmar que el cambio se realizó con éxito con el comando “systemctl get-default” de nuevo.

comando get-default


Nivel de ejecución 3 vs. nivel de ejecución 5

Los dos niveles de ejecución de los que oirás hablar y con los que trabajarás más serán el 3 y el 5. Básicamente se reduce a esto: el nivel de ejecución 3 es una línea de comandos, y el nivel de ejecución 5 es una interfaz gráfica de usuario.

Por supuesto, no todas las distribuciones siguen esta convención, y su sistema podría ser configurado por un administrador para que estos niveles de ejecución tengan aún más diferencias.

Pero, en general, así es como funciona. Si quiere ver exactamente qué servicios están habilitados en ambos niveles de ejecución, lo veremos en la siguiente sección.

Listar los servicios que están habilitados en un nivel de ejecución determinado

Hasta los últimos años, “chkconfig –list” era el comando para listar los servicios que se habilitaban en los diferentes niveles de ejecución. Si su sistema operativo está actualizado, ese comando puede darle un error o aplazarlo a systemd.

comando chkconfig

Si queremos ver qué servicios se iniciarán cuando arranquemos en modo gráfico (nivel de ejecución 5), podemos ejecutar esta orden:


Lista de servicios

Para ver los servicios que se ejecutan de forma predeterminada en otros niveles de ejecución, simplemente sustituya “graphical.target” por el nombre del objetivo que necesita ver.


¿Bajo qué nivel de ejecución se ejecutará un proceso?

Si desea ver en qué nivel(es) de ejecución se ejecuta un servicio específico, puede utilizar este comando:


Por ejemplo, si quisiera ver en qué nivel de ejecución se ejecutará el daemon SSH, debería escribir:


Nivel de ejecución para un servicio

De acuerdo con la salida en la captura de pantalla anterior, el servicio SSH se iniciará en los niveles de ejecución 2, 3 y 4 (multi-user.target)

¿Como Cambiar el Nivel de Ejecución en una Aplicación?

Como se ha visto anteriormente, nuestro servicio de SSH sólo funciona en los niveles de ejecución 2-4 (multi-user.target). ¿Y si también queremos que se inicie cuando arrancamos en una interfaz gráfica – nivel de ejecución 5 (graphical?target)? Podríamos aplicar esa configuración con el siguiente comando:


Habilitar servicio al inicio

Problemas de Seguridad con los Niveles de Ejecución en Linux

Como dijimos anteriormente en este artículo, el objetivo de los niveles de ejecución de Linux es dar a un administrador el control sobre los servicios que se ejecutan bajo ciertas condiciones. Tener este tipo de control granular sobre su sistema mejora la seguridad, ya que puede estar seguro de que no hay servicios externos ejecutándose.

El problema puede surgir cuando un administrador no sabe exactamente qué servicios se están ejecutando, por lo tanto, no se molesta en asegurar esas superficies de ataque.

Puede utilizar los métodos de esta guía para configurar su nivel de ejecución predeterminado y controlar qué aplicaciones se están ejecutando. Estas prácticas no sólo liberarán recursos del sistema, sino que también mantendrán su servidor más seguro.

Recuerde que sólo debe utilizar el nivel de ejecución que necesite. Por ejemplo, no tiene sentido iniciar el nivel de ejecución 5 (interfaz gráfico) si sólo piensa utilizar el terminal.

Cambiar a un nivel de ejecución diferente introducirá múltiples servicios nuevos, algunos de los cuales pueden ejecutarse completamente en segundo plano y puede que se olvide de protegerlos.

¿Cuál es el mejor nivel de ejecución para mí?

La determinación del nivel de ejecución más adecuado para todos depende de la situación. Generalmente, es probable que utilice los niveles de ejecución 3 y 5 de forma regular.

Si se siente cómodo con la línea de órdenes y no necesita una interfaz gráfica, el nivel de ejecución 3 (en la mayoría de las distribuciones) será el mejor para usted.

Esto evitará que se ejecuten servicios innecesarios. Por otro lado, si desea tener una mayor experiencia de escritorio y una interfaz gráfica para usar varias aplicaciones, etc., entonces el nivel de ejecución 5 será su nivel de ejecución preferido.

Si necesita realizar el mantenimiento de un servidor de producción, el nivel de ejecución 1 se adapta bien a esa situación. Se utiliza para garantizar que usted es el único en el servidor (el servicio de red ni siquiera se inicia), y puede realizar el mantenimiento sin interrupciones.

En raras ocasiones, puede que incluso necesite utilizar el nivel de ejecución 4. Esto sólo sucederá en situaciones particulares en las que usted o el administrador del sistema tengan un nivel de ejecución configurado de forma personalizada. En la siguiente sección se explica cómo hacerlo.

Como probablemente ha supuesto, no podrá (y no puede) ejecutar su sistema en los niveles de ejecución 0 o 6, pero es posible cambiar a ellos sólo para reiniciar o apagar. Hacerlo no debería ser necesario normalmente, ya que hay otros comandos que lo hacen por nosotros.

¿Podemos Crear un Nuevo Nivel de ejecución en Linux?

Es posible crear un nuevo nivel de ejecución en Linux, pero es extremadamente improbable que alguna vez necesite hacerlo. Si estaba decidido a hacerlo de todas formas, puede empezar copiando uno de los objetivos systemd existentes, y luego editarlo con sus propias personalizaciones.

Los objetivos se encuentran en:


Si quería basar su nuevo runlevel/target en graphical.target (runlevel 5), copie ese directorio en su nuevo directorio de destino.


Después de eso, cree un nuevo directorio “wants”, así:


Y luego, enlace simbólico los servicios adicionales de /usr/lib/systemd/system que desea habilitar para su nuevo nivel de ejecución.

Espero que el tutorial le sea útil. Vuelva a visitarnos.

Mokhtar Ebrahim
Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *