Niveles de ejecución

Estas aquí:
<< Regresar

Niveles de ejecución

Los niveles de ejecución de los sistemas operativos basados en Unix, también conocidos como runleves, en inglés, indican el modo en el que el sistema será iniciado. Los niveles son indicados mediante los números del 0 al 6. En la mayoría de los Unix y distribuciones Linux (aunque no podría decir que en todas) el nivel de ejecución son los siguientes:
EL ARCHIVO /etc/inittab:

  • 0 Indica halt o apagado de la máquina.
  • 1 Indica monousuario.
  • 2 Indica modo multiusuario sin soporte de red.
  • 3 Indica modo multiusuario completo con soporte de red.
  • 4 No usado, con esta opción el administrador puede personalizar el inicio para cargar algún servicio.
  • 5 Indica multiusuario completo con inicio gráfico (X11)
  • 6 Indica shutdown y reboot: Se apaga inmediatamente la máquina para reinicio.

N indica que no se ha cambiado el runlevel con el comando init. Si se hubiera cambiado antes, aparecería un número indicando en nivel alterior, 5, indica el nivel actual.

Un administrador (root) puede editar el archivo /etc/inittab como mejor convenga al usuario, sin embargo también tiene el poder de establecerlo en 0 o en 6. Si se establece en 6, algo que hice como experimento en mi Mandriva, la próxima vez que la máquina se encienda, se leerá el modo 6, shutdown y reboot, y se hará exactamente eso. De hecho se crea un ciclo infinito de reinicios que puede ser desconcertante para el usuario. Algo similar pasa al establecer el modo de ejecución en 0, cada vez que se enciende la computadora, inmediatamente se apaga. La manera de cambiar esto es entrar en modo recover y editar de nuevo el archivo /etc/inittab.

Pero si no deben establecerse, ¿Por qué están ahí? La razón es que otros usuarios pueden requerirlos realmente.

Podemos conocer el estado del runlevel de nuestro equipo con las siguientes instrucciones:

who y la bandera de -r nos indica el runlevel del equipo y la fecha en la que se inició ese runlevel.

who -r
run-level' 5 2015-12-08 10:20

También con el comando runlevel

runlevel
N 5

En caso de que se haya cambiado previamente el runlevel, N indicará el estado anterior del runlevel.

NOTA: Es importante mencionar que en muchas distribuciones modernas de Linux, se ha cambiado /etc/inittab por el uso de /etc/systemd, aunque ambas versiones siguen funcionando la realidad es que inittab dejará de ser el sistema por defecto para darle pie a systemd.

Systemd

Como se mencionó previamente systemd es el reemplazo para el viejo y tradicional sistema «System V init». systemd fue diseñado para permitir un manejo de dependencias y tiene la habilidad de manejar más tareas en paralelo al momento en que el sistema inicia. Systemd cuenta con snapshotting del sistema y a su vez recuperación del estado del sistema, realiza un seguimiento de los procesos almacenados en lo que se conoce como un «cgroup» en comparación con el método convencional «PID». systemd se encuentra actualmente por defecto con muchas distribuciones de Linux populares, como Debian, Fedora, Mandriva, Mageia, Ubuntu, Arch Linux, CentOS 7, RHEL 7.0 (Red Hat Enterprise Linux) y Oracle Linux 7.0. systemd se refiere a los niveles de ejecución como targets.

Controlando los Runleves

Para mostrar el runlevel actual de nuestro sistema, lo podemos hacer con la siguiente instrucción:

systemctl get-default
graphical.target

Como respuesta tenemos que el sistema se encuentra en «graphical.target». Basciamente el nivel de ejecución «graphical.target» es el equivalente al tradicional runlevel 5, Acceso completo a usuarios con entorno gráfico y red.

Puede desplegar los nuevos runlevels/targets con el siguiente comando:

ls -al /lib/systemd/system/runlevel*
/lib/systemd/system/runlevel0.target -> poweroff.target
/lib/systemd/system/runlevel1.target -> rescue.target
/lib/systemd/system/runlevel2.target -> multi-user.target
/lib/systemd/system/runlevel3.target -> multi-user.target
/lib/systemd/system/runlevel4.target -> multi-user.target
/lib/systemd/system/runlevel5.target -> graphical.target
/lib/systemd/system/runlevel6.target -> reboot.target

De lo anterior poedemos ver que existen 7 diferentes niveles de ejecución comprendidos entre system poweoff y system reboot. Si hacemos una comparación entre los niveles de ejecución y los targets quedaría algo así como:

Runlevel Systemd Description
0 poweroff.target
1 rescue.target
2 multi-user.target
3 multi-user.target
4 multi-user.target
5 graphical.target
6 reboot.target

Tradicionalmente el nivel por default se contenía dentro del archivo /etc/inittab y podía ser impreso en pantalla con la siguiente instrucción:

cat /etc/inittab | grep initdefault

La salida típica reportada podía ser similar a :id:5:initdefault: Al desplegar en pantalla el contenido de /etc/inittab es posible que nos reporte un mensaje similar a:

cat /etc/inittab
inittab is no longer used when using systemd.

ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

Ctrl-Alt-Delete is handled by /etc/systemd/system/ctrl-alt-del.target

systemd uses 'targets' instead of runlevels. By default, there are two main targets:

multi-user.target: analogous to runlevel 3
graphical.target: analogous to runlevel 5

To set a default target, run:

ln -sf /lib/systemd/system/.target /etc/systemd/syste/default.target

O en su defecto

cat /etc/inittab
cat: /etc/inittab: No existe el fichero o el directorio

Configurando un nuevo nivel de ejecución por defecto

En los siguientes ejemplos cambiaremos el nivel de ejecución de graphical.target a multi-user.target, del Runlevel 5 al Runlevel 3.

El archivo /etc/systemd/system/default.target es una liga suave así que con las siguientes instrucciones bastará para eliminar la liga suave y volverla a generar pero con el runlevel que queremos:

rm /etc/systemd/system/default.target
ln -s /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target

De forma alternativa podemos cambiar la última instrucción con la bandera de -f para indiscar que el archivo de destino será removido

ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target
rm /etc/systemd/system/default.target
rm: remove symbolic link ‘/etc/systemd/system/default.target’? y
ln -s /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target
systemctl get-default
runlevel3.target

Si reiniciamos el sistema. Ahora iniciará en el runlevel 3 – multi-user.target, para revertir los cambios hechos podemos hacerlo de la siguiente manera:

systemctl get-default
runlevel3.target
rm /etc/systemd/system/default.target
rm: remove symbolic link ‘/etc/systemd/system/default.target’? y
ln -s /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
systemctl get-default
runlevel5.target

Para intercambiar de niveles de ejecución, se debe reiniciar el sistema o en su lugar escribir init seguido del nivel de corrida que queramos en la terminal.

Última actualización: agosto 29, 2018

Deja un comentario

Facebook
Facebook
Twitter
Visit Us
LinkedIn
YOUTUBE
YOUTUBE