Crea tus propios servicios, o daemon, en Ubuntu con Systemd

Escrito por Rubén Velasco
GNU Linux

Systemd es un conjunto de herramientas, librerías y servicios diseñados para llevar la llevar la administración y configuración central de los sistemas Linux e interactuar directamente con el núcleo de los mismos. En muchos sistemas operativos, especialmente en las últimas versiones de Ubuntu, este es el encargado de controlar los servicios, o daemon, del sistema operativo y, por ello, cada vez más aplicaciones recurren a este componente del sistema para controlar sus aplicaciones y procesos en segundo plano. Por ello, si estamos montando un servidor, debemos tener esta configuración en mente si queremos que todo funcione como es debido.

Como hemos dicho, cada vez son más las aplicaciones que dependen de Systemd para crear sus propios demonios o servicios en el sistema. Aplicaciones como Deluge, Syncthing o Tiny Tiny RSS son algunas que, si queremos que funcionen de forma óptima, deben recurrir a esta configuración para crear sus servicios que les permitan funcionar en segundo plano constantemente en el sistema.

En nuestro ejemplo hemos creado un daemon para el motor de actualizaciones de Tiny Tiny RSS, aunque sustituyendo los parámetros que os vamos a citar más adelante vamos a poder utilizarlo para ejecutar cualquier script, comando o servicio que necesitemos siempre en segundo plano en nuestro sistema Ubuntu con Systemd.

Crea un servicio o daemon propio en Systemd para Ubuntu

Para realizar esta tarea, lo primero que debemos hacer es situarnos, con el comando cd, en la ruta donde se guardan todos estos servicios: /etc/systemd/system/ ejecutando el comando:

cd /etc/systemd/system/

A configuración crearemos un nuevo fichero terminado en extensión “service”, que será donde pegaremos la configuración del proceso a ejecutar. En nuestro caso, por ejemplo, vamos a crear un fichero llamado “ttrssupdate.service” ejecutando el comando:

sudo nano ttrssupdate.service

Se nos abrirá este conocido editor de texto. Ahora debemos copiar y pegar el siguiente contenido para crear nuestro daemon personalizado y hacer, además, que se ejecute automáticamente al inicio de nuestro servidor Linux:


[Unit]
Description=Daemon TTRSS Auto-Update Feeds 
After=network.target mysql.service

[Service]
User=www-data
ExecStart=/var/www/html/rss/update_daemon2.php

[Install]
WantedBy=multi-user.target

Sin entrar en los detalles técnicos que forman este fichero, indicar lo siguiente:

  • Description: Podemos introducir aquí el nombre y una descripción de lo que va a hacer nuestro daemon.
  • After: Indicaremos si queremos que se cargue después de otros servicios o componentes del sistema. También podemos encontrar una directiva “Before” que actúa al contrario.
  • User: El usuario que ejecutaré el daemon. También puede funcionar con Group.
  • ExecStart: Ruta completa (no funcionan relativas) al script o binario que queremos ejecutar.
  • WantedBy: Directivas de uso y otras dependencias.

Habilitar nuestro daemon

Una vez que hemos creado el servicio, o daemon, en nuestro sistema, antes de poder empezar a utilizarlo debemos habilitarlo. Para ello, ejecutaremos el comando “systemctl enable” seguido del servicio que acabamos de crear. En nuestro caso, por ejemplo, sería:

systemctl enable ttrssupdate.service

Nos pedirá dos veces la contraseña de superusuario de nuestro sistema para garantizar que tenemos permisos para crear y habilitar este servicio en el sistema.

Una vez habilitado el servicio, lo iniciamos manualmente la primera ves (después estará siempre en ejecución y, cuando reiniciemos el sistema, incluso arrancará automáticamente) con el comando:

systemctl start ttrssupdate.service

Listo. Como podemos ver, aunque esta configuración avanzada de Linux puede parecer bastante complicada, en realidad no lo es tanto y, gracias a Systemd, disponible desde Ubuntu 16.04 (y desde hace tiempo en muchos otros sistemas operativos Linux) podemos crear nuestros propios demonios y servicios en Linux.

Para finalizar, os dejamos otros comandos que pueden ser útiles para trabajar con servicios Systemd:

  • systemctl daemon-reload – Nos permite recargar todos los servicios de nuevo, útil si, por ejemplo, modificamos uno de ellos.
  • sudo systemctl stop ttrssupdate.service – Nos permite detener el servicio.
  • sudo systemctl restart ttrssupdate.service – Nos permite reiniciar el servicio.
  • journalctl -u ttrssupdate.service – Nos permite ver el registro, o log, generado por el servicio.
  • sudo systemctl status ttrssupdate.service – Nos permite ver la información de estado sobre el servicio en cuestión.

Últimos análisis

Valoración RZ
9
Valoración RZ
10
Valoración RZ
9
Valoración RZ
10
Valoración RZ
7
Valoración RZ
9
Valoración RZ
10
Valoración RZ
8
Valoración RZ
10
Valoración RZ
9