Saltar al contenido principal

Capítulo 2.6 - Proceso Init y systemd

Objetivos de Aprendizaje​

Al final de este capítulo, usted será capaz de:

  • Comprender el rol del proceso init (PID 1)
  • Explicar cómo systemd gestiona los servicios
  • Comprender los unit files de systemd
  • Gestionar servicios con systemctl

¿Qué es systemd?​

systemd es el sistema de inicialización y gestión de servicios en la mayoría de las distribuciones Linux modernas. Reemplaza los antiguos sistemas init (SysV init).


Roles de systemd​

1. Primer Proceso (PID 1)​

systemd es siempre el proceso con PID 1:

  • Padre de todos los procesos
  • Gestiona los procesos huérfanos
  • No puede ser terminado normalmente

2. Gestión de Servicios​

systemd inicia, detiene y supervisa los servicios:

  • Inicio automático al arrancar
  • Reinicio en caso de fallo
  • Dependencias entre servicios
  • Monitoreo del estado

3. Gestión de Niveles de Ejecución​

systemd utiliza targets (equivalentes a los runlevels):

  • multi-user.target: Modo consola
  • graphical.target: Modo gráfico
  • rescue.target: Modo de rescate
  • poweroff.target: Apagado

Unit Files​

Los servicios de systemd se definen mediante unit files:

[Unit]
Description=Servicio Web Apache
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/apache2 -D FOREGROUND
Restart=always

[Install]
WantedBy=multi-user.target

Tipos de unit files:

  • .service: Servicios
  • .target: Niveles de ejecución
  • .timer: Tareas programadas (alternativa a cron)
  • .mount: Puntos de montaje
  • .socket: Sockets de red

Comandos systemctl​

Gestión de servicios con 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

# Habilitar al inicio
systemctl enable apache2

# Deshabilitar al inicio
systemctl disable apache2

# Ver todos los servicios
systemctl list-units --type=service

Journal systemd​

systemd gestiona los logs con journalctl:

# Ver los logs de un servicio
journalctl -u apache2

# Logs en tiempo real
journalctl -f

# Logs desde hoy
journalctl --since today

# Logs con prioridad
journalctl -p err

Resumen​

En este capítulo, usted ha aprendido:

systemd: Sistema de inicialización moderno, PID 1
Roles: Gestión de servicios, procesos, niveles de ejecución
Unit files: Configuración de servicios
systemctl: Comandos de gestión
journalctl: Visualización de logs


Próximos Pasos​

Capítulo 2.7: Servicios y Demonio
Capítulo 2.8: Niveles de Ejecución (Runlevels)


Capítulo creado el: Diciembre 2024