Un nivel de ejecución es un estado operativo predefinido de un sistema UNIX o Linux que determina qué servicios y procesos están disponibles después del arranque.

¿Qué es Runlevel?
Un nivel de ejecución es un concepto de los sistemas operativos UNIX y Linux que define un estado específico de la máquina al determinar qué procesos, servicios y recursos del sistema están activos. Actúa como un marco para controlar el inicio y el apagado del sistema, permitiendo a los administradores gestionar el entorno según las necesidades operativas. Cada nivel de ejecución corresponde a un modo particular, como el mantenimiento del sistema, la operación multiusuario basada en texto o la disponibilidad completa de la interfaz gráfica.
Al arrancar el sistema, este accede a un nivel de ejecución predeterminado definido en su configuración, y el proceso init garantiza que se inicie o detenga el conjunto correcto de servicios según dicho nivel. Al cambiar el nivel de ejecución, los administradores pueden adaptar rápidamente el sistema a diferentes tareas, como la resolución de problemas en modo monousuario, la ejecución sin red por motivos de seguridad o la habilitación de servicios gráficos y de red completos para su uso habitual. Este mecanismo proporciona una forma estandarizada y eficiente de gestionar el comportamiento del sistema sin necesidad de intervención manual para cada servicio.
Diferentes niveles de ejecución de Linux
A continuación se muestra una tabla estructurada de los niveles de ejecución tradicionales de SysV de Linux y sus propósitos:
| Nivel de ejecución | Mareas Ideales para Lecciones | Caso de uso típico |
| 0 | Detener (apagar) | Apaga el sistema de forma segura. |
| 1 | Modo de usuario único | Modo de mantenimiento o emergencia con acceso raíz solamente, sin redes. |
| 2 | Modo multiusuario sin red | Proporciona múltiples inicios de sesión de usuario pero deshabilita los servicios de red (varía según la distribución). |
| 3 | Modo multiusuario completo con funciones de red | Modo estándar basado en texto, no gráfico, con todos los servicios y redes habilitados. |
| 4 | Indefinido / definible por el usuario | Rara vez usado; disponible para configuración personalizada. |
| 5 | Modo multiusuario con redes y GUI | Se inicia en un entorno de escritorio gráfico con conexión a red completa. |
| 6 | reiniciar | Reinicia el sistema de forma segura. |
¿Para qué se utiliza Runlevel?
Los niveles de ejecución se utilizan para controlar el estado operativo de un sistema Linux o UNIX, definiendo qué servicios, procesos y recursos del sistema deben estar activos en cada momento. Permiten a los administradores gestionar el comportamiento del sistema durante el arranque, el apagado o las transiciones entre diferentes modos de funcionamiento.
Por ejemplo, un sistema puede colocarse en modo de usuario único para solucionar problemas y cambiarse a modo multiusuario para uso normal. server operaciones o se inician en una interfaz gráfica para su uso en el escritorio. Al configurar o cambiar el nivel de ejecución, los administradores pueden habilitar o deshabilitar rápidamente grupos de servicios, conservar recursos del sistema, realizar tareas de mantenimiento o garantizar que la máquina funcione con la configuración más adecuada para su función. Este enfoque estructurado ayuda a mantener la coherencia, la seguridad y la eficiencia en diferentes entornos.
¿Cómo comprobar el nivel de ejecución?
Puedes comprobar el nivel de ejecución actual en un sistema Linux mediante comandos que informan sobre el estado operativo del sistema. En los sistemas SysVinit tradicionales , el comando `runlevel` muestra los niveles de ejecución anterior y actual, mientras que el comando `who -r` muestra el nivel de ejecución actual con mayor detalle.
En las distribuciones modernas basadas en systemd , que reemplazan los niveles de ejecución con objetivos , el comando equivalente es systemctl get-default para ver el objetivo predeterminado, y systemctl isolate <objetivo> para cambiar a otro. Además, systemctl list-units --type=objetivo proporciona información sobre los objetivos activos, que se corresponden con niveles de ejecución como multi-user.target o graphical.target.
¿Cómo cambiar el nivel de ejecución en Linux?

Cambiar el nivel de ejecución en Linux depende de si el sistema utiliza el antiguo framework SysVinit o el moderno sistema de inicio systemd.
Sistemas basados en SysVinit
El nivel de ejecución se puede cambiar temporalmente con el comando `init` o `telinit` seguido del número de nivel de ejecución. Por ejemplo, ejecutar `init 3` cambia el sistema al modo multiusuario sin interfaz gráfica, mientras que `init 5` inicia el entorno de escritorio gráfico. Para que el cambio sea permanente, se debe modificar el nivel de ejecución predeterminado en el archivo `/etc/inittab`, donde el sistema lee qué nivel de ejecución debe usar al arrancar por defecto.
Sistemas basados en Systemd
Los niveles de ejecución se reemplazan por destinos . Para cambiar temporalmente a otro destino, utilice systemctl isolate <destino>, como systemctl isolate multi-user.target para entrar en modo texto o systemctl isolate graphical.target para iniciar la interfaz gráfica de usuario. Para cambiar el valor predeterminado para futuros arranques, ejecute systemctl set-default <destino>, que actualiza el enlace simbólico para el destino del sistema predeterminado.
¿Por qué es importante el nivel de ejecución?
A continuación se muestra una lista de razones por las que los niveles de ejecución son importantes en los sistemas Linux y Unix:
- Control de sistemaLos niveles de ejecución definen qué servicios y procesos deben ejecutarse, lo que brinda a los administradores un control preciso sobre el estado operativo del sistema.
- FlexibilidadPermiten cambiar rápidamente entre diferentes modos, como el modo de usuario único para mantenimiento o el modo gráfico para uso de escritorio.
- Localización de averíasLos administradores pueden arrancar en entornos mínimos (como el nivel de ejecución 1) para corregir errores de configuración o recuperarse de fallas.
- Gestión de recursosAl deshabilitar servicios innecesarios en ciertos niveles de ejecución, el sistema puede conservar CPU, memoria, y poder.
- SeguridadLos niveles de ejecución inferiores pueden restringir el acceso a usuarios y servicios, lo que resulta útil para aislar el sistema durante el mantenimiento o en caso de sospecha de compromiso.
- ConsistenciaProporcionan una estructura estandarizada para los estados del sistema en diferentes sistemas similares a Unix, simplificando la administración.
- Automatización . Scripts y las configuraciones vinculadas a los niveles de ejecución agilizan el inicio, el apagado y las transiciones, reduciendo el trabajo manual.
Problemas de nivel de ejecución
A continuación se presenta una descripción general de los problemas de nivel de ejecución más comunes y por qué son importantes:
- Nivel de ejecución predeterminado mal configuradoSi el nivel de ejecución predeterminado del sistema (o el destino systemd) está configurado incorrectamente, la máquina puede iniciarse en un estado no deseado, como el modo gráfico en un server, o un modo sin red en una estación de trabajo, lo que genera desperdicio de recursos o una usabilidad limitada.
- Error al cargar servicios críticosEn un nivel de ejecución determinado, ciertos demonios Se espera que se inicien automáticamente. Si errores de configuración impiden su inicio, el sistema podría carecer de funciones de red, de servicios de visualización o incluso de funciones esenciales de inicio de sesión, dejándolo parcial o totalmente inutilizable.
- Incapacidad para cambiar los niveles de ejecuciónProblemas con los scripts de inicio o el servicio. dependencias Puede impedir que el sistema cambie de modo dinámicamente. Por ejemplo, cambiar del nivel de ejecución 3 (multiusuario basado en texto) al nivel de ejecución 5 (gráfico) puede fallar si el administrador de pantalla está mal configurado o no está presente.
- Bucles de arranque o bloqueosUna configuración de nivel de ejecución incorrecta o rota puede provocar que el sistema intente repetidamente cargar servicios incompatibles, lo que resulta en reinicios continuos o núcleo pánico. Esto suele ocurrir cuando el nivel de ejecución predeterminado apunta a un modo que requiere una ejecución no disponible. hardware o software
- Comportamiento inconsistente entre distribuciones. No todo Distribuciones de Linux Trate los niveles de ejecución de la misma manera. Por ejemplo, algunos usan el nivel de ejecución 2 como modo multiusuario predeterminado, mientras que otros usan el 3 o el 5. Esto puede generar confusión y errores de configuración cuando los administradores trabajan en varios sistemas.
- Transición a los objetivos de systemdLos sistemas Linux modernos han reemplazado en gran medida los niveles de ejecución por destinos systemd. Si bien cumplen una función similar, las diferencias en terminología y comandos pueden causar problemas a los administradores acostumbrados a SysVinit, lo que puede provocar errores en la gestión de servicios y la recuperación del sistema.
¿Cuál es la diferencia entre objetivo y nivel de ejecución?
Aquí tienes una tabla comparativa que explica la diferencia entre niveles de ejecución y objetivos en Linux:
| Aspecto | Nivel de ejecución (SysVinit) | Objetivo (systemd) |
| Definición | Un estado numérico predefinido (0–6) que determina qué servicios y procesos se inician. | Una unidad con nombre en systemd que agrupa servicios y define el estado del sistema. |
| Formato | Identificado por números (por ejemplo, nivel de ejecución 3 = multiusuario sin GUI). | Identificado por nombres descriptivos (por ejemplo, multi-user.target, graphic.target). |
| Archivo de configuración | Controlado a través de /etc/inittab. | Administrado con archivos de unidad en /etc/systemd/system/ y /lib/systemd/system/. |
| Flexibilidad | Estados fijos con personalización limitada (principalmente 7 niveles de ejecución). | Altamente flexible, permitiendo objetivos y dependencias personalizados. |
| Estado predeterminado | Establecido en /etc/inittab. | Establecer con systemctl set-default . |
| Cambiar comando | Cambiado temporalmente con init o telinit . | Cambiado temporalmente con systemctl isolate . |
| Checkout Extensibility | No es fácilmente extensible; está vinculado al antiguo SysVinit. | Totalmente extensible; los administradores pueden crear nuevos objetivos para necesidades específicas. |
| Comprobación del estado actual | Comprobado con runlevel o who -r. | Se comprueba con systemctl get-default o systemctl list-units --type=target. |