Systemd – Crear un archivo de servicio systemd

Systemd – Crear un archivo de servicio systemd

Que es systemd

Systemd es una herramienta esencial en el mundo de Linux que simplifica la administración de servicios y procesos en un sistema operativo. Funciona como un sistema de inicio y administración de servicios, reemplazando los métodos tradicionales de inicio como SysVinit.

Con systemd, los administradores de sistemas pueden controlar y gestionar servicios de manera más eficiente, automatizando tareas como el inicio, detención y reinicio de aplicaciones. Además, ofrece un registro detallado de eventos, facilitando la identificación de problemas y la solución de errores.

Configurar un servicio systemd

Archivo de ejemplo

[Unit]
Description=Descripcion de tu servicio
After=network.target

[Service]
ExecStart=/path/to/service //parametros si se necesitan
Type=simple
Restart=on-failure

[Install]
WantedBy=multi-user.target

El ejemplo anterior es muy simple pero sirve para los propósitos de esta guía, si quieres profundizar en systemd te recomiendo esta web.

Pasos

  1. Crea el archivo de unidad de systemd: Debes crear un archivo con extensión .service en el directorio /etc/systemd/system/ o en /lib/systemd/system/. Puedes nombrar el archivo como desees, pero generalmente se utiliza una extensión significativa, como mi_servicio.service.

  2. Abre el archivo en un editor de texto con permisos de administrador. Puedes usar un editor de texto en la línea de comandos como nano, vim, emacs, o cualquier otro editor de tu elección. Por ejemplo:

sudo nano /etc/systemd/system/mi_servicio.service
  1. Copia y pega el contenido que proporcionaste en tu pregunta en el archivo que acabas de crear.

  2. Asegúrate de que los siguientes detalles sean correctos en el archivo:

    • Description: Proporciona una descripción significativa de tu servicio.
    • ExecStart: Debes especificar la ruta completa del ejecutable que deseas iniciar, seguido de cualquier argumento que requiera tu aplicación.
    • Type: Este campo generalmente se establece en simple si tu servicio es de tipo simple.
    • Restart: Puedes configurar cómo deseas que se reinicie el servicio en caso de fallo. En este caso, se reiniciará en caso de fallo (on-failure).
  3. Guarda el archivo y cierra el editor de texto.

  4. Recarga el daemon de systemd para que tome en cuenta los cambios en la configuración:

sudo systemctl daemon-reload
  1. Inicia el servicio y habilítalo para que se inicie automáticamente al arrancar el sistema:
sudo systemctl start mi_servicio
sudo systemctl enable mi_servicio
  1. Verifica el estado del servicio para asegurarte de que se está ejecutando sin problemas:
sudo systemctl status mi_servicio

Eso es todo. Tu servicio debería estar configurado y en funcionamiento. Puedes modificar la configuración de systemd según sea necesario para tu aplicación específica.

Notas

Las rutas /lib/systemd/system/ y /etc/systemd/system/ son dos ubicaciones diferentes donde se pueden encontrar archivos de unidades (unit files) de systemd en sistemas Linux. La principal diferencia entre estas dos ubicaciones radica en su propósito y cómo se gestionan los archivos en cada una:

  1. /lib/systemd/system/:

    • Propósito: Esta ubicación generalmente contiene archivos de unidades proporcionados por el sistema operativo o por paquetes de software instalados en el sistema. Estos archivos de unidades son parte de la configuración predeterminada del sistema y son proporcionados por el proveedor del sistema operativo o por los paquetes de software instalados.
    • Gestión: Los archivos en esta ubicación suelen ser de solo lectura y no deben modificarse directamente por los usuarios o administradores del sistema. Cualquier modificación en esta ubicación podría ser sobrescrita por actualizaciones del sistema operativo o de los paquetes de software.
  2. /etc/systemd/system/:

    • Propósito: Esta ubicación es utilizada para personalizar y administrar los archivos de unidades de systemd en el sistema. Los archivos ubicados aquí tienen prioridad sobre los archivos de unidades en /lib/systemd/system/. Puedes colocar tus propios archivos de unidades personalizados o realizar modificaciones en las unidades existentes para adaptarlas a tus necesidades específicas.
    • Gestión: Los archivos en /etc/systemd/system/ pueden ser modificados y personalizados por los administradores del sistema. Esto permite a los usuarios adaptar la configuración de systemd según sus requisitos sin preocuparse de que las modificaciones sean sobrescritas por actualizaciones del sistema.

En resumen, la principal diferencia entre estas dos ubicaciones es su finalidad y su gestión. /lib/systemd/system/ contiene archivos de unidades proporcionados por el sistema operativo y paquetes, mientras que /etc/systemd/system/ se utiliza para personalizar y administrar las unidades de systemd de manera que se adapten a las necesidades específicas del sistema o del usuario.