como-usar-y-crear-daemon-en-raspberry-pi

Cómo usar y crear Daemon en Raspberry Pi

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:

  1. 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/.

  2. 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.

  3. 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.

  4. 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.