Cómo crear un servicio Systemd en Linux

Cómo crear un servicio Systemd en Linux

System es un conjunto de software moderno que proporciona muchos componentes en un sistema de Linux que incluye un sistema y un administrador de servicios. Es compatible con Sysv y LSB Init scripts y funciona como reemplazo para sysvinit.

Un servicio Systemd se define en un archivo de unidad (una unidad es una representación de un servicio y recursos del sistema, como dispositivos, enchufes, puntos de montaje, etc.). Los archivos de la unidad de servicio personalizado deben almacenarse en el /etc/systemd/system/ directorio y debe tener un .servicio extensión. Por ejemplo, una costumbre aplicación Usos de servicio /etc/systemd/system/test-app.servicio archivo de la unidad.

[También puede que le guste: por qué 'init' necesitaba ser reemplazado con 'Systemd' en Linux]

Un archivo unitario es un archivo de estilo INI de texto sin formato que generalmente incluye tres secciones comunes. La primera sección suele ser la Unidad Sección que lleva información genérica sobre la unidad que no depende del tipo de unidad.

La siguiente sección es la sección de tipo de unidad, para un servicio, es un Servicio sección. Y la sección final es la Instalar Sección que lleva información de instalación para la unidad.

En esta guía, mostraremos cómo crear un nuevo system Servicio y administrar el servicio utilizando el comando SystemCTL, en Linux.

Creación de un archivo de servicio Systemd personalizado en Linux

Para ejecutar una aplicación, programa o script como servicio en Systemd, puede crear un nuevo servicio Systemd de la siguiente manera. Comience por crear el servicio unidad Archivo nombrado aplicación.servicio (Recuerda reemplazar aplicación con el nombre real de su servicio o aplicación), debajo /etc/systemd/system/:

# vi/etc/systemd/system/test-app.servicio 

La siguiente configuración se utiliza para definir un servicio para ejecutar un Matraz aplicación utilizando Pistolero, un servidor Python WSGI HTTP para UNIX.

[Unidad] Descripción = Gunicorn Daemon para servir la aplicación de prueba después = red.Target [Service] User = Root Group = Root WorkingDirectory =/Apps/Test-App/Environment = "Path =/Apps/Test-App/bin" Execstart =/Apps/Test-App/bin/Gunicorn --Workers 9- t 0 -unir 127.0.0.1: 5001 -M 007 WSGI: aplicación-Debug a nivel de log --Ccess-Logfile/var/log/gunicorn/test_app_access.LOG --Error-LogFile/Var/Log/Gunicorn/Test_App_error.LOG EXECRELOAD =/bin/kill -s hup $ mainpid reinSartSec = 5 [install] WantedBy = Multi -user.objetivo 

Describamos brevemente cada directiva de configuración en la configuración anterior:

  • Descripción - se utiliza para especificar una descripción para el servicio.
  • Después - Define una relación con una segunda unidad, el red.objetivo. En este caso, el aplicación.servicio se activa después del red.objetivo unidad.
  • Usuario - se utiliza para especificar al usuario con cuyos permisos se ejecutará el servicio.
  • Grupo - se utiliza para especificar el grupo con cuyos permisos se ejecutará el servicio.
  • Directorio de trabajo - se utiliza para establecer el directorio de trabajo para procesos ejecutados.
  • Ambiente - se utiliza para establecer variables de entorno para procesos ejecutados.
  • Exectard - se usa para definir los comandos con sus argumentos que se ejecutan cuando se inicia este servicio.
  • Execreload - se usa para definir los comandos para ejecutar para activar una configuración de recarga en el servicio.
  • Buscado por - habilita que se cree un enlace simbólico en el .quiere/ o .requiere/ directorio de cada una de las unidades enumeradas, multi usuario.objetivo En este caso, cuando el aplicación.servicio la unidad está habilitada utilizando el Comando de habilitar SystemCTL.

Puede encontrar todos los parámetros de configuración de la unidad de servicio, bien descritos en la documentación de configuración de la unidad de servicio.

Guardar el archivo de la unidad y cerrarlo. Luego recargar Systemd con este nuevo archivo de la unidad de servicio ejecutando:

# comando SystemCTL Daemon-Relar 

Recuerde siempre ejecutar este comando después de editar un archivo de unidad.

Administrar el servicio Systemd en Linux

Para iniciar/activar el servicio, ejecute el comando SystemCTL de la siguiente manera:

# SystemCTL Start Test-App.servicio 

Para verificar si el servicio se está ejecutando o no, emita el comando SystemCTL como se muestra.

# SystemCTL Status Test-App.servicio 
Verifique el estado del servicio

Para habilitar el servicio para comenzar en el arranque del sistema, use el SystemCTL habilitar dominio. Puede verificar si el servicio ha sido habilitado utilizando el SystemCTL ISable Comando de la siguiente manera:

# SystemCTL Habilitar la aplicación de prueba.Servicio # SystemCTL APP de prueba habilitado.servicio 
Habilitar el servicio para comenzar en el arranque

Alternativamente, también puede habilitar e iniciar el servicio al mismo tiempo que se muestra.

# SystemCTL Habilitar-Ahora Test-App.servicio 

Para detener/desactivar el servicio, ejecute el SystemCtl Stop Comando de la siguiente manera:

# SystemCTL Stop Test-App.servicio 

Para reiniciar el servicio, ejecute el SystemCTL reiniciar Comando de la siguiente manera:

# SystemCTL reiniciar la aplicación de prueba.servicio 

También puede deshabilitar un servicio para evitar que comience en el arranque del sistema, utilizando el Systemctl deshabilitar dominio. Puede verificar si el servicio ha sido habilitado utilizando el SystemCTL ISable Comando de la siguiente manera:

# SystemCTL Desactivar la aplicación de prueba.Servicio # SystemCTL IS-DISABLET-APP-APP.servicio 

Alternativamente, puede deshabilitarlo y detenerlo al mismo tiempo que se muestra.

# SystemCTL DISPLAY-Ahora Test-App.servicio 

Para obtener más detalles sobre la gestión de servicios Systemd y otros recursos, ejecute:

# Man SystemCTL