En sistemas Unix y Linux, un daemon (o “demonio” en español) es un proceso que se ejecuta en segundo plano y no está asociado a una interfaz de usuario directa.
Estos procesos suelen iniciarse durante el arranque del sistema y continúan ejecutándose hasta que el sistema se apaga.
Los daemons realizan tareas esenciales, como la gestión de servicios de red, el manejo de solicitudes de impresión o la supervisión de recursos del sistema.
Cómo Funcionan los Daemons
Un daemon generalmente sigue estos pasos para funcionar:
Inicialización: El daemon se inicia al arrancar el sistema o cuando se solicita explícitamente. Puede iniciarse desde un script de inicio, como
systemd
, o a través de un archivo de configuración en/etc/init.d/
.Desprendimiento del Terminal: El daemon se desacopla de la terminal que lo inició. Esto implica que el proceso se ejecuta en segundo plano y no está vinculado a una sesión de usuario específica.
Ejecución Continua: Una vez en ejecución, el daemon sigue funcionando y realizando su tarea específica. No requiere intervención del usuario y puede operar incluso si no hay usuarios conectados.
Terminación: Los daemons pueden finalizarse de diversas maneras, ya sea por el apagado del sistema, mediante un comando específico o cuando se encuentra un error crítico.
Cómo usar Daemons en Raspberry Pi
En Raspberry Pi OS, que usa systemd
para gestionar servicios. systemd
es un sistema de gestión de servicios utilizado en muchas distribuciones modernas de Linux. Permite iniciar, detener, habilitar y supervisar servicios del sistema.
Puedes usar los siguientes comandos para controlar daemons:
Iniciar un Daemon:
sudo systemctl start nombre_del_servicio
Detener un Daemon:
sudo systemctl stop nombre_del_servicio
Reiniciar un Daemon:
sudo systemctl restart nombre_del_servicio
Habilitar un Daemon para que se inicie automáticamente en el arranque:
sudo systemctl enable nombre_del_servicio
Deshabilitar un Daemon para que no se inicie automáticamente:
sudo systemctl disable nombre_del_servicio
Verificar el estado de un Daemon:
sudo systemctl status nombre_del_servicio
Resolución de Problemas
Para diagnosticar problemas con un daemon, revisa los logs:
journalctl -u nombre_del_servicio
Crear un Daemon personalizado
Si deseas crear un Daemon personalizado, necesitas definir un archivo de servicio para systemd
. Primero, debes crear un archivo de servicio que definirá la configuración del mismo.
Para ello, abre un editor de texto con permisos de superusuario:
sudo nano /etc/systemd/system/mi_daemon.service
En este archivo, se define el comportamiento del servicio. A continuación, añadimos la configuración necesaria. En el archivo mi_daemon.service
, añade la siguiente configuración:
[Unit]
Description=Mi Daemon Personalizado
[Service]
ExecStart=/ruta/al/ejecutable
Restart=always
[Install]
WantedBy=multi-user.target
- [Unit]: Sección que proporciona la descripción del servicio.
Description
: Breve descripción del servicio.
- [Service]: Sección que define cómo debe comportarse el servicio.
ExecStart
: Ruta completa al ejecutable del daemon.Restart
: Define la política de reinicio del servicio;always
reiniciará el servicio si se detiene inesperadamente.
- [Install]: Sección que especifica las condiciones para habilitar el servicio.
WantedBy
: Define el objetivo (target) al cual pertenece este servicio;multi-user.target
es el equivalente a runlevel 3, es decir, un sistema con interfaz multiusuario sin GUI.
Después de crear o modificar un archivo de servicio, es necesario recargar systemd
para que lea la nueva configuración:
sudo systemctl daemon-reload
Ahora puedes iniciar el servicio y hacer que se inicie automáticamente al arrancar el sistema:
sudo systemctl start mi_daemon
sudo systemctl enable mi_daemon
start
: Inicia el servicio inmediatamente.enable
: Habilita el servicio para que se inicie automáticamente al arrancar el sistema.
Para asegurarte de que el servicio se está ejecutando correctamente, puedes verificar su estado con el siguiente comando:
sudo systemctl status mi_daemon
Este comando mostrará el estado actual del servicio, así como cualquier error o mensaje de registro que pueda ayudarte a diagnosticar problemas.