Capítulo 2.7 - Servicios y Demonios
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Comprender los servicios y demonios en Linux
- Gestionar los servicios con systemd
- Crear servicios personalizados
- Comprender los unit files de systemd
¿Qué es un Servicio/Demonio?
Un servicio (o demonio) es un programa que se ejecuta en segundo plano, generalmente sin interfaz de usuario, para proporcionar funcionalidades del sistema o de red.
Tipos de Servicios
Servicios del Sistema
Servicios esenciales para el funcionamiento del sistema:
- sshd: Servidor SSH
- systemd-logind: Gestión de sesiones
- NetworkManager: Gestión de red
Servicios de Red
Servicios que escuchan en la red:
- apache2/nginx: Servidores web
- mysql/postgresql: Bases de datos
- bind9: Servidor DNS
Servicios de Usuario
Servicios iniciados por el usuario:
- pulseaudio: Audio
- dbus: Comunicación entre procesos
Gestión con systemd
Comandos systemctl
# Ver el estado de un servicio
systemctl status apache2
# Iniciar un servicio
systemctl start apache2
# Detener un servicio
systemctl stop apache2
# Reiniciar un servicio
systemctl restart apache2
# Recargar la configuración
systemctl reload apache2
# Habilitar al inicio
systemctl enable apache2
# Deshabilitar al inicio
systemctl disable apache2
# Ver todos los servicios
systemctl list-units --type=service
# Ver los servicios activos
systemctl list-units --type=service --state=running
Unit Files
Los servicios se definen mediante unit files en /etc/systemd/system/ o /lib/systemd/system/:
Ejemplo de servicio simple:
[Unit]
Description=Mi Servicio Personalizado
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/mi-servicio
Restart=always
User=miusuario
[Install]
WantedBy=multi-user.target
Secciones:
- [Unit]: Metadatos y dependencias
- [Service]: Configuración del servicio
- [Install]: Instalación y activación
Tipos de Servicios
Tipo simple
Servicio que inicia y permanece activo:
Type=simple
ExecStart=/usr/bin/mi-servicio
Tipo forking
Servicio que hace fork y el proceso padre termina:
Type=forking
ExecStart=/usr/bin/mi-servicio
PIDFile=/var/run/mi-servicio.pid
Tipo oneshot
Servicio que se ejecuta una vez y termina:
Type=oneshot
ExecStart=/usr/bin/script-init
RemainAfterExit=yes
Dependencias
Los servicios pueden tener dependencias:
[Unit]
Description=Servicio Web
After=network.target mysql.service
Requires=mysql.service
Wants=redis.service
Directivas:
- After: Inicia después de estos servicios
- Before: Inicia antes de estos servicios
- Requires: Dependencia obligatoria
- Wants: Dependencia opcional
Resumen
En este capítulo, usted ha aprendido:
Servicios/Demonios: Programas en segundo plano
systemd: Gestor moderno de servicios
systemctl: Comandos de gestión
Unit files: Configuración de servicios
Dependencias: After, Before, Requires, Wants
Tipos: simple, forking, oneshot
Próximos Pasos
Capítulo 2.8: Niveles de Ejecución (Runlevels)
Capítulo 2.9: Proceso de Arranque (Boot)
Capítulo creado el: diciembre 2024