Qué son los niveles de ejecución en Linux
Qué son los niveles de ejecución en Linux y otros derivados de Unix. Cuando arrancamos un sistema Linux, este inicia con unas condiciones predefinidas, que definen su estado. Por ejemplo, podemos iniciar un sistema Linux en línea de comandos y trabajar desde allí. Normalmente, esto esta indicado para usuarios expertos y sysadmin. Por otro lado, tenemos el inicio de sesión con GUI, que es el más común y práctico para la inmensa mayoría de usuarios. Estos son estados diferentes, que comúnmente los denominamos niveles de ejecución. Determinar estos niveles es fundamental, pues de ellos dependen el uso que le daremos al sistema. - Especifica las herramientas y aplicaciones, que deben ejecutarse o estar disponibles al iniciar nuestro Linux. - Fijar el estado del sistema cuando arranca, por ejemplo si usara entorno de escritorio (GUI) o no.
Qué son los niveles de ejecución
Qué son los niveles de ejecución en Linux
Antes de comenzar con el artículo, puedes identificar el nivel de tu sistema con el siguiente comando. rundevel La salida del comando nos imprime un número, que en este caso es 5. Este es el nivel predeterminado en la mayoría de distribuciones Linux. root@SoloLinux-demo:~# runlevel N 5 root@SoloLinux-demo:~# Puedes ver el manual de runlevel, con el comando man. man runlevel Ejemplo. RUNLEVEL(8) runlevel RUNLEVEL(8) NAME runlevel - Print previous and current SysV runlevel SYNOPSIS runlevel OVERVIEW "Runlevels" are an obsolete way to start and stop groups of services used in SysV init. systemd provides a compatibility layer that maps runlevels to targets, and associated binaries like runlevel. Nevertheless, only one runlevel can be "active" at a given time, while systemd can activate multiple targets concurrently, so the mapping to runlevels is confusing and only approximate. Runlevels should not be used in new code, and are mostly useful as a shorthand way to refer the matching systemd targets in kernel boot parameters. Table 1. Mapping between runlevels and systemd targets ┌─────────┬───────────────────┐ │Runlevel │ Target │ ├─────────┼───────────────────┤ │0 │ poweroff.target │ ├─────────┼───────────────────┤ │1 │ rescue.target │ ├─────────┼───────────────────┤ │2, 3, 4 │ multi-user.target │ ├─────────┼───────────────────┤ │5 │ graphical.target │ ├─────────┼───────────────────┤ │6 │ reboot.target │ └─────────┴───────────────────┘ DESCRIPTION runlevel prints the previous and current SysV runlevel if they are known. The two runlevel characters are separated by a single space character. If a runlevel cannot be determined, N is printed instead. If neither can be determined, the word "unknown" is printed. Manual page runlevel(8) line 1/62 67% (press h for help or q to quit) Como puedes comprobar, en el manual de runlevel nos indica que en realidad tenemos 7 niveles. Tal vez puedan parecer un poco complejos, pero te aseguro que no lo son. En la siguiente tabla lo verás todo mucho más claro. También puedes listar los niveles de tu sistema, con este comando. ls -l /lib/systemd/system/runlevel*
Listar los niveles Cada nivel de ejecución, es un entorno específico y particular que se ejecuta a través de un grupo de scripts. Estos scripts se guardan en directorios únicos, que a su vez se almacenan en el directorio /etc. Estos son los directorios que contienen los archivos específicos y sus scripts. - rc0.d - rc1.d - rc2.d - rc3.d - rc4.d - rc5.d - rc6.d En nuestro primer ejemplo, vemos el contenido de "rc0.d". ls /etc/rc0.d Se imprime lo siguiente, pero ojo... esto puede variar dependiendo de tu sistema y configuración.
Contenido de rc0.d También puedes ver el contenido de todos los archivos, incluyendo otro directorio rc que contiene otro tipo de scripts que inician con el sistema. ls /etc/rc*.* Salida. sergio@sololinux:~$ ls /etc/rc*.* /etc/rc0.d: K01alsa-utils K01cryptdisks-early K01hddtemp K01lightdm K01networking K01rsyslog K01uuidd K01avahi-daemon K01cups-browsed K01irqbalance K01lvm2-lvmetad K01openvpn K01saned K01cryptdisks K01exim4 K01kerneloops K01lvm2-lvmpolld K01plymouth K01speech-dispatcher /etc/rc1.d: K01alsa-utils K01cups-browsed K01irqbalance K01lvm2-lvmetad K01rsyslog K01ufw K01avahi-daemon K01exim4 K01kerneloops K01lvm2-lvmpolld K01saned K01uuidd K01cups K01hddtemp K01lightdm K01openvpn K01speech-dispatcher /etc/rc2.d: K01cups S01binfmt-support S01dbus S01irqbalance S01lvm2-lvmpolld S01plymouth S01speech-dispatcher S01acpid S01console-setup.sh S01exim4 S01kerneloops S01mintsystem S01rsync S01sysstat S01anacron S01cron S01grub-common S01lightdm S01ntp S01rsyslog S01uuidd S01avahi-daemon S01cups-browsed S01hddtemp S01lvm2-lvmetad S01openvpn S01saned /etc/rc3.d: K01cups S01binfmt-support S01dbus S01irqbalance S01lvm2-lvmpolld S01plymouth S01speech-dispatcher S01acpid S01console-setup.sh S01exim4 S01kerneloops S01mintsystem S01rsync S01sysstat S01anacron S01cron S01grub-common S01lightdm S01ntp S01rsyslog S01uuidd S01avahi-daemon S01cups-browsed S01hddtemp S01lvm2-lvmetad S01openvpn S01saned /etc/rc4.d: K01cups S01binfmt-support S01dbus S01irqbalance S01lvm2-lvmpolld S01plymouth S01speech-dispatcher S01acpid S01console-setup.sh S01exim4 S01kerneloops S01mintsystem S01rsync S01sysstat S01anacron S01cron S01grub-common S01lightdm S01ntp S01rsyslog S01uuidd S01avahi-daemon S01cups-browsed S01hddtemp S01lvm2-lvmetad S01openvpn S01saned /etc/rc5.d: K01cups S01binfmt-support S01dbus S01irqbalance S01lvm2-lvmpolld S01plymouth S01speech-dispatcher S01acpid S01console-setup.sh S01exim4 S01kerneloops S01mintsystem S01rsync S01sysstat S01anacron S01cron S01grub-common S01lightdm S01ntp S01rsyslog S01uuidd S01avahi-daemon S01cups-browsed S01hddtemp S01lvm2-lvmetad S01openvpn S01saned /etc/rc6.d: K01alsa-utils K01cryptdisks-early K01hddtemp K01lightdm K01networking K01rsyslog K01uuidd K01avahi-daemon K01cups-browsed K01irqbalance K01lvm2-lvmetad K01openvpn K01saned K01cryptdisks K01exim4 K01kerneloops K01lvm2-lvmpolld K01plymouth K01speech-dispatcher /etc/rcS.d: S01alsa-utils S01cryptdisks S01dns-clean S01kmod S01lvm2 S01plymouth-log S01procps S01ufw S01apparmor S01cryptdisks-early S01keyboard-setup.sh S01lm-sensors S01networking S01pppd-dns S01udev S01x11-common sergio@sololinux:~$ Bueno, ahora ya sabemos qué es un nivel de ejecución y, los directorios donde se almacenan sus archivos de configuración. Ahora vemos como ejecutar y cambiar el nivel de ejecución. Para esta operación disponemos de dos comandos, el init y el telinit. En nuestro caso usamos el init para reiniciar el sistema. sudo init 6 El sistema reinicia instantáneamente, al iniciar volverá a su nivel anterior, el 5. Con el comando systemctl, también nos ayuda a cambiar de nivel, pero de una forma un poco diferente. En vez de usar el carácter numérico del nivel, opera con el nombre del objetivo (revisa la tabla superior). Identificamos el nivel actual. systemctl get-default La respuesta es "graphical.target", que corresponde al nivel de ejecución 5.
Uso de systemctl con niveles Si quieres cambiar al nivel 3 (modo línea de comandos), ejecuta este comando. sudo systemctl isolate multi-user.target Si ejecutas runlevel de nuevo, te dirá el nivel actual y en nivel anterior. root@SoloLinux-demo:~# runlevel 5 3 root@SoloLinux-demo:~# Para volver al sistema con GUI, cambiamos de nivel otra vez. sudo systemctl isolate graphical.target Como último apunte de este artículo, ejecutamos de nuevo el comando runlevel. Vemos que el valor de los niveles se ha invertido, ya que solo tiene la capacidad de imprimir dos niveles, el actual y el anterior.
Resultado del comando runlevel Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Chat de SoloLinux en Telegram Read the full article















