Introducción
Los servicios y daemons en Linux son procesos que se ejecutan en segundo plano, proporcionando funciones esenciales como redes, almacenamiento y seguridad. A través de systemd, los administradores pueden gestionar la ejecución de estos servicios, asegurando su correcto funcionamiento, configuración y relación de dependencias. Controlar estos procesos permite optimizar el rendimiento del sistema, evitar conflictos y garantizar que los servicios esenciales operen de manera eficiente.
Objetivos
Esta sección tiene como propósito:
- Comprender el rol de systemd en la gestión de servicios y daemons en Linux.
- Aprender a listar, iniciar, detener y reiniciar servicios con systemctl.
- Analizar las dependencias entre servicios y cómo estas afectan la administración del sistema.
- Configurar servicios para que se inicien automáticamente con el sistema.
- Aplicar el enmascaramiento y desenmascaramiento de servicios para evitar conflictos en la ejecución.
Control de Servicios y Daemons en Linux
Introducción a systemd y los procesos iniciados automáticamente
El daemon systemd gestiona el proceso de arranque en Linux, coordinando la activación de servicios y recursos del sistema. Además de iniciar los daemons, systemd maneja la gestión de dependencias, lo que evita intentos de inicio fallidos cuando un servicio depende de otro que aún no está disponible.
Los daemons son procesos que se ejecutan en segundo plano, esperando eventos o realizando tareas automáticamente. Muchos de ellos inician con el arranque del sistema y permanecen en ejecución hasta que el sistema se apaga o se detienen manualmente. Por convención, sus nombres terminan en d (por ejemplo: sshd, crond, etc.).
Unidades systemd
systemd usa unidades para gestionar servicios y otros recursos del sistema. Las unidades están definidas por archivos de configuración que incluyen información sobre cómo deben ejecutarse. Los principales tipos de unidades son:
- Servicio (.service): Representa procesos del sistema como
sshdocron. - Socket (.socket): Monitorea conexiones y activa daemons cuando un cliente se conecta.
- Ruta (.path): Activa servicios cuando hay cambios en archivos o directorios específicos.
Listar servicios activos
systemctl list-units --type=service
Muestra:
UNIT: Nombre del servicioLOAD: Si está cargado en memoriaACTIVE: Estado generalSUB: Estado detalladoDESCRIPTION: Descripción del servicio
Listar todos los servicios (activos e inactivos)
systemctl list-units --type=service --all
Administración de Servicios con systemctl
Ver estado de un servicio
systemctl status sshd.service
Ver si un servicio está activo
systemctl is-active sshd.service
Resultado: active si está en ejecución, inactive si no.
Ver si un servicio está habilitado al arranque
systemctl is-enabled sshd.service
Resultado: enabled o disabled.
Ver si un servicio falló al iniciar
systemctl is-failed sshd.service
Resultado: failed si hubo error.
Gestión Avanzada de Servicios
Iniciar un servicio
systemctl start sshd.service
Detener un servicio
systemctl stop sshd.service
Reiniciar un servicio
systemctl restart sshd.service
Recargar configuración sin reiniciar
systemctl reload sshd.service
Recargar o reiniciar si no soporta recarga
systemctl reload-or-restart sshd.service
Dependencias de Servicios
Ver dependencias de un servicio
systemctl list-dependencies sshd.service
Ver qué depende de un servicio
systemctl list-dependencies --reverse sshd.service
Enmascarar y Desenmascarar Servicios
Enmascarar un servicio
systemctl mask sendmail.service
Ver servicios enmascarados
systemctl list-unit-files --type=service
Intentar iniciar un servicio enmascarado
systemctl start sendmail.service
Desenmascarar un servicio
systemctl unmask sendmail.service
Habilitar y Deshabilitar Servicios en el Arranque
Habilitar servicio al arranque
systemctl enable sshd.service
Habilitar e iniciar de inmediato
systemctl enable --now sshd.service
Deshabilitar servicio (sin detenerlo)
systemctl disable sshd.service
Deshabilitar y detener servicio
systemctl disable --now sshd.service
Ver si un servicio está habilitado
systemctl is-enabled sshd.service
Conclusión
El control de servicios en Linux es una tarea fundamental para garantizar el funcionamiento eficiente del sistema. A través de systemctl, los administradores pueden gestionar la ejecución de procesos, configurar su comportamiento en el arranque y manejar dependencias de manera efectiva. Dominar estos conceptos permite asegurar la estabilidad del sistema y optimizar el uso de recursos, facilitando la administración de entornos tanto personales como empresariales.