Niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema LINUX
enero 5, 2025 | by juancmmartinez@gmail.com
El administrador de servicios es el primer programa lanzado por el núcleo durante el proceso de
arranque, por lo que su PID (número de identificación del proceso) siempre es 1
Estándar SysVinit
Se ordenan por runlevels del 0 al 6
- Runlevel 0 Apagado del sistema.
- Runlevel 1, s o usuario único Modo de usuario único, sin red y otras capacidades no esenciales (modo de mantenimiento).
- Runlevel 2, 3 o 4 Modo multiusuario. Los usuarios pueden iniciar sesión por consola o red. Los niveles de
- ejecución 2 y 4 no se usan con frecuencia.
- Runlevel 5 Modo multiusuario. Es equivalente a 3, más el inicio de sesión en modo gráfico.
- Runlevel 6 Reinicio del sistema
Donde se almacenan los scripts de los runlevels
El init
es el encargado de gestionar los niveles de ejecución y de lanzar los scripts necesarios para iniciar los servicios asociados a cada nivel. A través del archivo /etc/inittab
, init
sabe qué nivel de ejecución se debe iniciar por defecto y qué servicios deben ejecutarse en cada nivel. Los scripts dentro de /etc/init.d/
son los encargados de manejar la activación o desactivación de los servicios.
/etc/inittab
id:runlevels:action:process
el comando runlevel mostrara el estado en el que se encuentra el SO
Systemd ¿Qué es systemd?
systemd es el sistema de inicio más común en Linux que gestiona los servicios y recursos del sistema, denominados «unidades» (units). Cada unidad consta de un nombre, un tipo y un archivo de configuración correspondiente.
Tipos de Unidades en systemd
- service: Para gestionar servicios activos del sistema (pueden iniciarse, detenerse o recargarse).
- socket: Relacionado con sockets de archivos o redes; activa una unidad de servicio cuando se recibe una solicitud.
- device: Asocia unidades a dispositivos de hardware reconocidos por el núcleo del sistema.
- mount: Define puntos de montaje en el sistema de archivos, similar a las entradas en
/etc/fstab
. - automount: Similar a
mount
, pero monta automáticamente cuando se accede al punto de montaje. - target: Agrupación de otras unidades, gestionadas como una sola unidad (similar a niveles de ejecución en SysV).
- snapshot: Representa el estado guardado del sistema (no siempre disponible).
Comandos básicos de systemctl
systemctl
es la herramienta principal para gestionar las unidades en systemd. Aquí algunos comandos comunes:
- Iniciar una unidad:
systemctl start unit.service
- Detener una unidad:
systemctl stop unit.service
- Reiniciar una unidad:
systemctl restart unit.service
- Ver el estado de una unidad:
systemctl status unit.service
- Comprobar si está activa:
systemctl is-active unit.service
- Habilitar la unidad al iniciar:
systemctl enable unit.service
- Deshabilitar la unidad al iniciar:
systemctl disable unit.service
- Verificar si una unidad está habilitada:
systemctl is-enabled unit.service
Objetivos y Niveles de Ejecución
- Objetivos (
target
): Agrupan unidades para un objetivo común, comomulti-user.target
(equivalente al nivel de ejecución 3 en SysV). - Cambiar el objetivo actual:
systemctl isolate multi-user.target
- Establecer el objetivo predeterminado:
systemctl set-default multi-user.target
- Ver el objetivo predeterminado:
systemctl get-default
Archivos de configuración
- Los archivos de configuración de las unidades se encuentran en
/lib/systemd/system/
. - Para ver todas las unidades disponibles:
systemctl list-unit-files
. - Para listar unidades activas:
systemctl list-units
.
Gestión de energía
- Suspender:
systemctl suspend
(pone el sistema en modo de bajo consumo). - Hibernar:
systemctl hibernate
(guarda el estado en disco para restaurarlo al reiniciar).
Consideraciones de configuración energética
- Las acciones de eventos relacionados con la energía (como suspender o hibernar) se configuran en
/etc/systemd/logind.conf
o sus directorios correspondientes. - Si otro administrador de energía está presente (como
acpid
), podría interferir con las acciones de energía de systemd.
Resumen rápido:
- systemd gestiona servicios y recursos del sistema mediante unidades, como
service
,socket
ydevice
. - Usamos el comando
systemctl
para controlar estas unidades. - También gestiona los objetivos del sistema, que reemplazan los antiguos niveles de ejecución.
- systemd puede controlar eventos de energía, como suspensión y hibernación, si no hay otros servicios de energía en uso.
Este conjunto de herramientas proporciona un control eficiente y organizado sobre cómo se inicia, gestiona y detiene el sistema.
Upstart
Upstart es un sistema de inicialización utilizado en versiones anteriores de Ubuntu Linux antes de su transición a systemd en 2015. Este sistema de inicio fue diseñado para gestionar el arranque del sistema, los servicios y las tareas en segundo plano. A continuación, se resumen los puntos más importantes:
- Ubicación de los scripts:
- Los scripts de inicialización de Upstart se encuentran en el directorio
/etc/init/
. Estos scripts son utilizados para administrar servicios y procesos en el sistema.
- Los scripts de inicialización de Upstart se encuentran en el directorio
- Comando para listar servicios:
- Se puede enumerar los servicios del sistema utilizando el comando
initctl list
. Este comando muestra todos los servicios gestionados por Upstart junto con su estado actual y su PID (número de identificación del proceso). - Ejemplo de salida de
initctl list
: avahi-cups-reload stop/waiting
avahi-daemon start/running, process 1123
mountall-net stop/waiting
mountnfs-bootclean.sh start/running
nmbd start/running, process 3085
- Se puede enumerar los servicios del sistema utilizando el comando
- Gestión de servicios:
- Iniciar un servicio: Para iniciar un servicio, como una terminal virtual, se puede usar el comando
start
. Por ejemplo, para iniciar la sexta terminal virtual (tty6):
start tty6 - Ver el estado de un servicio: El comando
status
muestra el estado actual de un servicio o recurso. Por ejemplo:
status tty6
Esto mostraría algo como:
tty6 start/running, process 3282 - Detener un servicio: Para detener un servicio, se utiliza el comando
stop
. Por ejemplo:
stop tty6
- Iniciar un servicio: Para iniciar un servicio, como una terminal virtual, se puede usar el comando
- No utiliza
/etc/inittab
:- Upstart no depende del archivo
/etc/inittab
para definir los niveles de ejecución. En su lugar, gestiona los servicios mediante sus propios scripts y comandos. - A pesar de esto, algunos comandos heredados de SysV init, como
runlevel
ytelinit
, todavía pueden ser utilizados en sistemas con Upstart para verificar y alternar entre los niveles de ejecución.
- Upstart no depende del archivo
- Transición a systemd:
- Upstart fue principalmente desarrollado para Ubuntu Linux con el objetivo de facilitar el arranque paralelo de los procesos.
- Ubuntu dejó de usar Upstart a partir de 2015, cuando adoptó systemd como su sistema de inicialización y gestión de servicios.
En resumen:
Upstart es un sistema de inicialización que usaba Ubuntu antes de la adopción de systemd. Se caracteriza por la gestión de servicios a través de scripts en /etc/init/
, comandos como start
, stop
, y status
, y la falta de dependencia del archivo /etc/inittab
. Aunque Upstart ya no se usa en distribuciones modernas de Ubuntu, algunos comandos y conceptos pueden seguir presentes en sistemas antiguos.
RELATED POSTS
View all