Saltar al contenido principal

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