Resumen
systemd juega un papel fundamental en la gestión eficiente del proceso de arranque del sistema, la supervisión de los servicios en ejecución y el control de los diversos estados del sistema. A diferencia de init, que ejecuta scripts de forma secuencial, systemd procesa los servicios en paralelo basándose en dependencias, lo que mejora significativamente la velocidad de arranque. Este es un factor importante que contribuye al rendimiento y la estabilidad de los sistemas Linux modernos.
Características principales
Las características principales de systemd son las siguientes:
- Arranque paralelo: Analiza las dependencias de los servicios y ejecuta varios servicios simultáneamente, reduciendo el tiempo de arranque.
- Gestión integrada: Gestiona diversos elementos como el arranque del sistema, servicios, dispositivos y registros bajo un único marco.
- Monitorización de servicios: Ayuda a una operación estable, reiniciando automáticamente los servicios en caso de fallo.
- Sustitución de runlevels: Introduce el concepto de 'target' en lugar de 'runlevel' para controlar el estado del sistema.
Relación con init
systemd es el sucesor y reemplazo del sistema init tradicional. Hereda las funciones de inicio y apagado del sistema que realizaba init, añadiendo funcionalidades mejoradas.
- init: Es el primer proceso en ejecutarse y, durante el arranque, consultaba el archivo `/etc/inittab` para ejecutar scripts secuencialmente según el runlevel.
- systemd: También es el proceso con PID 1, pero utiliza 'targets' en lugar de runlevels y procesa servicios en paralelo basándose en dependencias, lo que lo hace más rápido y flexible.
- Compatibilidad: En la mayoría de los sistemas Linux modernos, init está enlazado simbólicamente a systemd, lo que significa que incluso si se usa el comando `init`, systemd actuará en su lugar.
Conceptos clave
Conceptos clave esenciales para entender systemd.
Unidad (Unit)
Todos los objetos gestionados por systemd (servicios, puntos de montaje, dispositivos, etc.) se definen como 'Unidades'. Cada unidad tiene un archivo de configuración (`*.service`, `*.mount`, etc.) que define una tarea específica.
- Service Unit: Gestiona procesos en segundo plano como servidores web (nginx.service) o bases de datos (mysql.service).
- Target Unit: Sirve para agrupar varias unidades. Es un concepto que sustituye a los runlevels; 'multi-user.target' significa modo multiusuario y 'graphical.target' significa modo gráfico.
- Mount Unit: Gestiona los puntos de montaje del sistema de archivos.
systemctl
Es la principal utilidad de línea de comandos para controlar systemd. Se utiliza para iniciar, detener, reiniciar servicios o verificar el estado de las unidades.
- Iniciar servicio: sudo systemctl start nginx
- Verificar estado del servicio: sudo systemctl status nginx
- Reiniciar sistema: sudo systemctl reboot
journalctl
Es el comando para consultar los registros del sistema gestionados de forma integrada por systemd. Permite filtrar los registros por servicio, por tiempo o por prioridad.
- Ver todos los registros: journalctl
- Ver registros de un servicio específico: journalctl -u nginx.service
- Ver registros en tiempo real: journalctl -f
Ejemplos de uso
Ejemplos de uso de los comandos principales de systemd: systemctl y journalctl.
Verificar el target de arranque del sistema
systemctl get-default
Verifica con qué target ha arrancado el sistema.
Apagar el sistema
sudo systemctl poweroff
Apaga el sistema de forma segura a través de systemd. Realiza la misma función que el comando `poweroff`.
Habilitar/deshabilitar un servicio específico
sudo systemctl enable nginx
sudo systemctl disable nginx
Configura un servicio específico para que se inicie automáticamente al arrancar el sistema, o lo deshabilita.
Reiniciar un servicio
sudo systemctl restart nginx
Reinicia un servicio de servidor web en ejecución. Útil cuando se han modificado archivos de configuración.
Consejos y precauciones
Aspectos útiles a tener en cuenta al usar systemd.
Consejos
- Los archivos de unidad de systemd se encuentran principalmente en los directorios `/etc/systemd/system/` o `/lib/systemd/system/`.
- systemd gestiona de forma integrada la mayoría de los comandos relacionados con el arranque/apagado. Por lo tanto, comandos como `halt`, `reboot` y `poweroff` suelen ser enlaces simbólicos a `systemctl`.
- Con el comando `systemctl status`, puede verificar el estado de un servicio y sus registros recientes a la vez.