Crear un servicio en linux en systemd

¡Hola! Hoy volvemos con un articulo sobre linux, esta vez sobre como crear un servicio en linux en systemd.

Si queréis mas artículos de ese tipo por favor, compartid el artículo en redes sociales y/o compartid.

¡Empezamos!

¿Que es systemd? Como dice en su web oficial:

systemd es un conjunto de bloques de construcción básicos para un sistema Linux. Proporciona un administrador de sistemas y servicios que se ejecuta como PID 1 e inicia el resto del sistema.

Restart:

Por defecto no se reinicia el servicio, nosotros le vamos a especificar que se reinicie siempre, pero se puede configurar:

  • Restart=always: Se reinicia siempre que se pare el proceso por la razón que sea para tenerlo siempre en funcionamiento
  • Restart=on-failure: Se reinicia siempre que de un fallo
  • Restart=on-abort: Se reinicia siempre que se aborte el proceso

Type: definimos “simple” para lanzar el proceso con ExecStart y que sea el proceso principal

ExecStart: es el path del ejecutable a lanzar

ExecStop: es la instrucción a lanzar para parar el servicio, no es obligatoria

A continuación tenemos un template de un servicio de systemd:

#
#
# 1. Copy this file to the directory: /etc/systemd/system or /lib/systemd/system/
# 2. Start and stop the service running: systemctl start/stop mi-servicio
# 3. To enable autostart at boot run: sudo systemctl enable mi-servicio
#
[Unit]
Description=Mi descripcion
#Si requiere red, descomentar:
#After=network.target

[Service]
Type=Simple
LimitNOFILE=802400
ExecStart=/PATH/DEL/EJECUTABLE
WorkingDirectory=/PATH
Restart=always
StandardOutput=append:/var/log/mi-servicio.log
StandardError=append:/var/log/mi-servicio.log
SyslogIdentifier=mi-servicio


[Install]
WantedBy=multi-user.target

Para hacer funcional esta template, solo hay que editar este contenido en un fichero localizado en: /lib/systemd/system/ El fichero tiene que tener extensión “.service”, ejemplo: /lib/systemd/system/mi-servicio.service

Después hay que habilitar el servicio con systemctl enable mi-servicio.service

Después ejecutaremos systemctl daemon-reload para recargar las unidades y ya podremos arrancar el servicio con systemctl start mi-servicio.service

Para ver el log se puede utilizar journalctl -u mi-servicio de esta forma veras todo lo relacionado con el servicio de systemd pero para tener un log de la salida de la aplicación se debe redirigir la salida de la aplicación hacia un fichero desde ExecStart o bien hacer que la propia aplicación no saque la información por pantalla y la vuelque a un log (desde código).

Esto ha sido todo sobre como crear un servicio en linux en systemd. Puedes ver algunos trucos para tus scripts en aquí.

Si quieres mas información sobre systemd puedes consultar la documentación en https://www.freedesktop.org/wiki/Software/systemd/ y si estas interesado en su código el repo de github oficial es
https://github.com/systemd/systemd
Recuerda que si te ha gustado el artículo y quieres mas artículos similares puedes dejar un comentario y/o compartir en redes sociales.

 

¡Hasta pronto!

Deja una respuesta