GNU/Linux >> Tutoriales Linux >  >> Linux

Comprender 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 lista de procesos y servicios que están activados o desactivados. Desde el momento en que se inicia Linux, siempre se encuentra en algún nivel de ejecución.

Este nivel de ejecución puede cambiar a medida que continúe usando su computadora, según el tipo de servicios a los que el sistema operativo necesite acceder.

Por ejemplo, ejecutar su máquina Linux con una interfaz gráfica de usuario requerirá un nivel de ejecución diferente que si solo estuviera ejecutando la línea de comandos 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 necesita. Para que el sistema determine qué servicios se necesitan activar (o desactivar), cambia el nivel de ejecución según sea necesario.

Importancia de los niveles de ejecución de Linux

Es posible que haya utilizado Linux durante años sin darse cuenta de que existen diferentes niveles de ejecución. Esto se debe a que no es algo que la mayoría de los administradores de servidores necesiten configurar con frecuencia.

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

Puede cambiar el nivel de ejecución en el que se encuentra un sistema (que veremos cómo hacerlo más adelante en este artículo), al igual que los servicios que se ejecutan dentro de los niveles de ejecución. Esto nos permite un control total sobre a qué servicios tienen acceso nuestros sistemas en un momento dado.

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

Hay siete niveles de ejecución diferentes en Linux, de cero a seis. Varias distribuciones pueden usar los siete niveles de ejecución de manera 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, deberá verificar cómo funcionan los niveles de ejecución en la distribución específica que está utilizando. En su mayor parte, la lista a continuación representa cómo las distribuciones de Linux generalmente configuran los niveles de ejecución:

Nivel de ejecución 0 apaga el sistema.

Nivel de ejecución 1 es un modo de usuario único, que se utiliza para tareas administrativas o de mantenimiento. También puede ver este modo denominado runlevel S (la S significa usuario único).

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

Nivel de ejecución 3 es un modo multiusuario con conexión en red. 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).

Nivel de ejecución 4 no se usa El usuario puede personalizar este nivel de ejecución para sus propios fines (cubriremos cómo hacerlo más adelante en este artículo).

Nivel de ejecución 5 es lo mismo que el nivel de ejecución 3, pero también inicia un administrador de pantalla. Este es el nivel de ejecución que está usando si usa un sistema que arranca en una GUI.

Nivel de ejecución 6 reinicia 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 simplemente escribiendo "nivel de ejecución" en la terminal.

Cuando ingrese el comando "nivel de ejecución", le dará dos números diferentes. El primer número es el nivel de ejecución anterior que estaba ejecutando su sistema 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 "ninguno", 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.

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

¿Cómo cambiar el nivel de ejecución actual?

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

$ telinit 3

Tenga en cuenta que debe ser el usuario root para ejecutar este comando. Tenga en cuenta que los niveles de ejecución funcionan de manera diferente en Debian y Ubuntu; por ejemplo, Ubuntu se iniciará 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 te quedas en el tty, ahora vacío. Simplemente presione Alt+F1 (o alguna otra tecla de función) en su teclado para ser llevado a una terminal que funcione.

Si usamos el comando "nivel de ejecución" nuevamente, 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.

Linux systemd objetivos frente a niveles de ejecución

En los últimos años, systemd ha venido a reemplazar el antiguo sistema "System V init" (niveles de ejecución). Todavía funciona básicamente de la misma manera, pero usa algunos comandos nuevos y comúnmente se refiere a "niveles de ejecución" como "objetivos".

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

Nivel de ejecución 1 =rescate.objetivo (nivel de ejecución1.objetivo)

Nivel de ejecución 2 =multiusuario.objetivo (nivel de ejecución2.objetivo)

Nivel de ejecución 3 =multiusuario.objetivo (nivel de ejecución3.objetivo)

Nivel de ejecución 4 =multiusuario.objetivo (nivel de ejecución4.objetivo)

Nivel de ejecución 5 =gráfico.objetivo (nivel de ejecución5.objetivo)

Nivel de ejecución 6 =reiniciar.objetivo (nivel de ejecución6.objetivo)

Continuaremos repasando systemd y los comandos que necesitará saber a medida que avanza este tutorial.

¿Cómo cambiar el nivel de ejecución predeterminado al inicio?

Hay muchas razones por las que es posible que desee iniciar en un nivel de ejecución diferente. Por ejemplo, es común que los administradores de sistemas inicien desde la línea de comandos y solo inicien una interfaz gráfica cuando lo consideren necesario.

Para esta funcionalidad, debe asegurarse de que su nivel de ejecución predeterminado esté configurado 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 al inicio. Es posible que todavía encuentre que este es el caso en algunas distribuciones.

Si trabaja con un sistema operativo que no se ha actualizado durante algunos años, aún encontrará este método relevante para usted.

$ vi /etc/inittab

En la captura de pantalla anterior, el nivel de ejecución 5 está configurado actualmente como el nivel de ejecución predeterminado para el inicio.

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

Es posible que su sistema no tenga el archivo /etc/inittab en absoluto, o que su archivo inittab le aconseje usar systemd en su lugar, como en esta captura de pantalla de nuestro sistema CentOS.

Para verificar el destino predeterminado actual de su sistema:

$ systemctl get-default

En la captura de pantalla anterior, la respuesta del sistema es "graphical.target". Como probablemente puedas adivinar, este es el equivalente al nivel de ejecución 5.

Para ver los otros objetivos disponibles y los niveles de ejecución con los que están asociados, escriba:

$ ls -l /lib/systemd/system/runlevel*

Estos enlaces simbólicos nos dicen que los objetivos de systemd funcionan prácticamente de la misma manera que los niveles de ejecución. Entonces, ¿cómo podemos cambiar el nivel de ejecución predeterminado (u objetivo) al inicio? Necesitamos crear un nuevo enlace simbólico, como este:

$ ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target

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 del 5. Si quisiera un nivel de ejecución diferente, simplemente sustituiría un número diferente en lugar del "3" en el comando.

Como referencia, el interruptor -f en ese comando indica que el archivo de destino debe eliminarse antes de crear el nuevo enlace. También puede eliminarlo primero con un simple comando rm.

Puede confirmar que el cambio se realizó correctamente con el comando "systemctl get-default" nuevamente.

Nivel de ejecución 3 frente a nivel de ejecución 5

Los dos niveles de ejecución de los que escuchará y con los que trabajará 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 un administrador puede configurar su sistema para que estos niveles de ejecución tengan aún más diferencias.

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

Lista de servicios que están habilitados en un nivel de ejecución particular

Hasta años recientes, “chkconfig –list” era el comando para listar los servicios que estarían habilitados en diferentes niveles de ejecución. Si su sistema operativo está actualizado, ese comando puede generarle un error o remitirlo a systemd.

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

$ systemctl list-dependencies graphical.target

Para ver los servicios que se ejecutan de forma predeterminada en otros niveles de ejecución, simplemente reemplace "graphical.target" con el nombre del objetivo que necesita ver.

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

Si desea ver en qué niveles de ejecución se ejecuta un servicio específico, puede usar este comando:

$ systemctl show -p WantedBy [name of service]

Por ejemplo, si desea ver en qué nivel de ejecución se ejecutará el demonio SSH, debe escribir:

$ systemctl show -p WantedBy sshd.service

De acuerdo con el resultado de la captura de pantalla anterior, el servicio SSH se iniciará en los niveles de ejecución 2, 3 y 4 (multiusuario.objetivo)

¿Cómo cambiar el nivel de ejecución de una aplicación?

Como se vio anteriormente, nuestro servicio SSH solo se ejecuta en los niveles de ejecución 2-4 (multi-user.target). ¿Qué sucede si también queremos que se inicie cuando iniciamos en una interfaz gráfica:nivel de ejecución 5 (gráfico.objetivo)? Podríamos aplicar esa configuración con el siguiente comando:

$ systemctl enable sshd.service

Problemas de seguridad con niveles de ejecución en Linux

Como dijimos anteriormente en este artículo, el punto de los niveles de ejecución de Linux es darle a un administrador control sobre qué servicios 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 se están ejecutando servicios extraños.

El problema puede surgir cuando un administrador no sabe exactamente qué servicios se están ejecutando, por lo que no se molesta en proteger 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 solo liberarán recursos del sistema, sino que también mantendrán su servidor más seguro.

Recuerde usar solo el nivel de ejecución que necesita. Por ejemplo, no tiene sentido iniciar el nivel de ejecución 5 (interfaz gráfica) si solo planea usar la terminal.

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

¿Qué nivel de ejecución es el mejor para mí?

Determinar qué nivel de ejecución es el mejor para usted depende de la situación. En general, probablemente usará los niveles de ejecución 3 y 5 con regularidad.

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

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

Si necesita realizar tareas de mantenimiento en un servidor de producción, el nivel de ejecución 1 se adapta bien a esa situación. Puede usar este nivel de ejecución para asegurarse de que es el único en el servidor (el servicio de red ni siquiera se inicia) y puede realizar su mantenimiento sin interrupciones.

En casos excepcionales, es posible que incluso necesite usar el nivel de ejecución 4. Esto sería solo en situaciones particulares en las que usted o el administrador del sistema tienen un nivel de ejecución configurado personalizado. Cubriremos cómo hacerlo en la siguiente sección.

Como probablemente haya asumido, no ejecutará (y no puede) su sistema en los niveles de ejecución 0 o 6, pero es posible cambiar a ellos solo para reiniciar o apagar. Por lo general, no debería ser necesario hacerlo, 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 muy poco probable que alguna vez necesite hacerlo. Si estaba decidido a hacerlo de todos modos, puede comenzar copiando uno de los objetivos de systemd existentes y luego editarlo con sus propias personalizaciones.

Los objetivos se encuentran en:

/usr/lib/systemd/system

Si desea basar su nuevo nivel de ejecución/objetivo en gráfico.objetivo (nivel de ejecución 5), copie ese directorio en su nuevo directorio de destino.

$ cp /usr/lib/systemd/system/graphical.target /usr/lib/systemd/system/mynew.target

Después de eso, crea un nuevo directorio de "deseos", así:

$ mkdir /etc/systemd/system/mynew.target.wants

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

Espero que encuentres útil el tutorial. Sigue regresando.


Linux
  1. Comprender las llamadas al sistema en Linux con strace

  2. Cómo actualizar a Linux Mint 20.3:la forma correcta

  3. Cómo cambiar la identidad de un sistema Linux

  4. Por qué 'sshpass' no es la forma correcta de automatizar las transferencias de archivos en Linux

  5. Comprender los scripts rc en Linux

El comando superior de Linux

Cómo usar el comando fd en el sistema Linux

Comprender el comando uname en Linux

EndeavourOS – Aprende Arch de la manera correcta

Entendiendo el comando time en Linux

Comprender el archivo /etc/fstab en Linux