Un daemon (o demonio) es un tipo especial de proceso en Linux (y otros sistemas Unix) que se ejecuta en segundo plano para realizar tareas específicas, a menudo sin interacción directa con el usuario. Los daemons son esenciales para el funcionamiento del sistema operativo, ya que proporcionan servicios y funcionalidades que requieren ejecución continua o activación bajo ciertas condiciones.
👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis
Características de un daemon
- Ejecuta en segundo plano:
- No tiene una interfaz gráfica ni interactúa directamente con el usuario.
- Frecuentemente asociado a tareas automáticas o de mantenimiento.
- Inicio automático:
- Se inicia durante el arranque del sistema o cuando un servicio lo requiere.
- Ejemplo: Un servidor web (como Apache) inicia un daemon para manejar solicitudes HTTP.
- Desacoplado del terminal:
- Un daemon se «desvincula» del terminal o consola en la que se inició, funcionando de forma independiente.
- Nombres terminados en «d»:
- Por convención, los daemons suelen terminar con la letra
d. Ejemplo: sshd (maneja conexiones SSH), crond (ejecuta tareas programadas).
- Por convención, los daemons suelen terminar con la letra
Ejemplos de daemons comunes
| Daemon | Función |
|---|---|
| sshd | Proporciona acceso remoto seguro mediante SSH. |
| httpd (Apache) | Maneja solicitudes HTTP para un servidor web. |
| mysqld | Administra bases de datos MySQL. |
| crond | Ejecuta tareas programadas definidas en cron. |
| systemd | Gestiona servicios y procesos del sistema. |
| udevd | Administra eventos relacionados con hardware conectado. |
| rsyslogd | Maneja registros del sistema (logs). |
Cómo funcionan los daemons
- Inicio:
- Los daemons se inician durante el arranque del sistema o manualmente mediante un administrador de servicios como systemd.
- También pueden ser iniciados automáticamente por otros procesos cuando es necesario.
- Desvinculación del terminal:
- Al iniciar, el daemon se separa del terminal. Esto implica:
- Ejecutar el proceso como hijo del proceso raíz (init o systemd).
- Redirigir su entrada, salida y errores estándar a /dev/null o archivos de registro.
- Al iniciar, el daemon se separa del terminal. Esto implica:
- Ejecución continua:
- Los daemons permanecen en ejecución esperando solicitudes o eventos, como una conexión SSH o el momento programado para ejecutar una tarea.
Gestión de daemons en Linux
La gestión de daemons en sistemas modernos generalmente se realiza con systemd.
Ver servicios activos (daemons en ejecución)
systemctl list-units --type=serviceIniciar un daemon manualmente
#Iniciar el servicio SSH (sshd).
sudo systemctl start sshdDetener un daemon
sudo systemctl stop sshdHabilitar un daemon para que inicie automáticamente
sudo systemctl enable sshdDeshabilitar un daemon
sudo systemctl disable sshdVer el estado de un daemon
sudo systemctl status sshdEjemplo: Crear un daemon simple
Supongamos que quieres crear un daemon que registre la hora actual cada minuto en un archivo de texto.
1) Crear script
#Escribir un script de shell
#!/bin/bash
while true; do echo "$(date)" >> /var/log/mi_daemon.log sleep 60 done2) Convertirlo en un servicio del sistema
sudo nano /etc/systemd/system/mi_daemon.service
#escribimos esto
[Unit] Description=Mi Daemon de Prueba
[Service] ExecStart=/path/to/mi_daemon.sh
Restart=always
[Install] WantedBy=multi-user.target3) Activar el daemon
sudo systemctl daemon-reload
sudo ystemctl start mi_daemon.service
sudo systemctl enable mi_daemon.service
#verificamos que esté funcionando
sudo systemctl status mi_daemon.serviceEn resumen, los daemons en Linux son la columna vertebral de muchos servicios del sistema. Aunque trabajen de manera silenciosa en segundo plano, su correcto funcionamiento garantiza la estabilidad y la seguridad del entorno. Conocer cómo identificarlos y gestionarlos es una habilidad clave para cualquier persona interesada en la administración de sistemas.
