Skip to content

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 sshd o cron.
  • 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 servicio
  • LOAD: Si está cargado en memoria
  • ACTIVE: Estado general
  • SUB: Estado detallado
  • DESCRIPTION: 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.