Esta breve guía explica qué es un nivel de ejecución, cuántos niveles de ejecución hay en Linux y cómo verificar el nivel de ejecución en los sistemas operativos Linux.
¿Qué es el nivel de ejecución?
Un nivel de ejecución es uno de los modos en los que se ejecutará un sistema operativo basado en Unix. En otras palabras, un nivel de ejecución es un estado de init y todo el sistema que define qué servicios del sistema están operando.
En Linux Kernel, existen 7 niveles de ejecución, comenzando de 0 a 6. El sistema puede iniciarse en un solo nivel de ejecución a la vez.
De forma predeterminada, un sistema arranca en el nivel de ejecución 3 o en el nivel de ejecución 5. El nivel de ejecución 3 es CLI y el 5 es GUI. El nivel de ejecución predeterminado se especifica en /etc/inittab
archivo en la mayoría de los sistemas operativos Linux.
Al usar el nivel de ejecución, podemos averiguar fácilmente si X se está ejecutando, si la red está operativa, etc.
1. Compruebe el nivel de ejecución en Linux (inicio de SysV)
Aquí está la lista de niveles de ejecución en las distribuciones de Linux, que se distribuyeron con SysV init
como administrador de servicios predeterminado.
- 0 - Alto
- 1 - Modo de texto de usuario único
- 2 - No utilizado (definible por el usuario)
- 3 - Modo de texto multiusuario completo
- 4 - No utilizado (definible por el usuario)
- 5 - Modo gráfico multiusuario completo (con una pantalla de inicio de sesión basada en X)
- 6 - Reiniciar
Ahora, veamos cómo encontrar los niveles de ejecución.
Para averiguar el nivel de ejecución del sistema, abra su Terminal y ejecute el siguiente comando:
$ runlevel
Salida de muestra:
N 3
En el resultado anterior, la letra 'N'
indica que el nivel de ejecución no ha cambiado desde que se inició el sistema. Y, 3
es el nivel de ejecución actual, es decir, el sistema está en modo CLI.
En versiones más nuevas de init
, puede encontrar los detalles del nivel de ejecución actual y anterior utilizando las variables de entorno denominadas RUNLEVEL
y PREVLEVEL
.
Digamos, por ejemplo, que para averiguar el nivel de ejecución actual, debe ejecutar:
$ echo $RUNLEVEL
Para encontrar el nivel de ejecución anterior:
$ echo $PREVLEVEL
Si desea cambiar RunLevel a otra cosa, edite /etc/inittab
archivo:
$ sudo vi /etc/inittab
Busque y edite la entrada initdefault
al nivel de ejecución de su elección. Digamos, por ejemplo, que para establecer el nivel de ejecución en modo gráfico multiusuario (nivel de ejecución 5), modifíquelo como se muestra a continuación.
id:5:initdefault:
Guarde y cierre el archivo. Reinicie su sistema para iniciar sesión en su nuevo nivel de ejecución.
Para obtener más detalles sobre los niveles de ejecución, consulte las páginas man.
$ man runlevel
2. Comprobar el nivel de ejecución en Linux (Systemd)
En versiones recientes de sistemas Linux (a partir de RHEL 7, Ubuntu 16.04 LTS), el concepto de niveles de ejecución ha sido reemplazado por systemd
objetivos.
Aquí está la lista de Systemd
objetivos en distribuciones de Linux, que se distribuyeron con Systemd
como administrador de servicios predeterminado.
- runlevel0.target, poweroff.target - Detener
- runlevel1.target, rescue.target - modo de texto de usuario único
- runlevel2.target, multi-user.target :no se usa (definible por el usuario)
- runlevel3.target, multi-user.target :modo de texto multiusuario completo
- runlevel4.target, multi-user.target :no se usa (definible por el usuario)
- runlevel5.target,graphical.target :modo gráfico multiusuario completo (con una pantalla de inicio de sesión basada en X)
- runlevel6.target,reboot.target - Reiniciar
En sistemas Linux que usan Systemd
como administrador de servicios predeterminado, puede encontrar el objetivo actual usando el comando:
$ systemctl get-default
Salida de muestra:
graphical.target
Como puede ver en el resultado anterior, mi nivel de ejecución actual (objetivo en otras palabras) es 5
, que es el modo gráfico.
Para ver todos los objetivos cargados actualmente, ejecute:
$ systemctl list-units --type target
Salida de muestra:
UNIT LOAD ACTIVE SUB DESCRIPTION basic.target loaded active active Basic System bluetooth.target loaded active active Bluetooth cryptsetup.target loaded active active Local Encrypted Volumes getty.target loaded active active Login Prompts graphical.target loaded active active Graphical Interface local-fs-pre.target loaded active active Local File Systems (Pre) local-fs.target loaded active active Local File Systems multi-user.target loaded active active Multi-User System network-online.target loaded active active Network is Online network-pre.target loaded active active Network (Pre) network.target loaded active active Network nfs-client.target loaded active active NFS client services nss-lookup.target loaded active active Host and Network Name Lookups nss-user-lookup.target loaded active active User and Group Name Lookups paths.target loaded active active Paths remote-fs-pre.target loaded active active Remote File Systems (Pre) remote-fs.target loaded active active Remote File Systems rpc_pipefs.target loaded active active rpc_pipefs.target rpcbind.target loaded active active RPC Port Mapper slices.target loaded active active Slices sockets.target loaded active active Sockets sound.target loaded active active Sound Card swap.target loaded active active Swap sysinit.target loaded active active System Initialization timers.target loaded active active Timers veritysetup.target loaded active active Local Verity Integrity Protected Volumes LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 26 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
El comando anterior mostrará solo los objetivos activos.
Para ver todos los objetivos cargados (activos e inactivos), ejecute:
$ systemctl list-units --type target --all
Si desea cambiar RunLevel a otra cosa, por ejemplo runlevel3.target
, configúrelo como se muestra a continuación:
$ sudo systemctl set-default runlevel3.target
Para cambiar a una unidad de destino diferente solo en la sesión actual, ejecute el siguiente comando:
$ sudo systemctl isolate runlevel3.target
Para obtener más detalles, consulte Systemd
páginas man.
$ man systemd
Verifique el nivel de ejecución de Linux usando el comando 'who'
Como sugirió uno de los lectores en la sección de comentarios a continuación, también podemos encontrar el nivel de ejecución usando who
comando como a continuación:
$ who -r
Salida de muestra:
run-level 5 2021-06-09 10:21
Espero que esto ayude.
Lectura relacionada:
- Cómo enumerar los servicios de inicio al arrancar en Linux