GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo ejecutar Shell Script como servicio Systemd en Linux

Systemd es un administrador de servicios que le brinda funciones de administración de demonios, seguimiento de procesos, montaje, montaje automático. Utiliza un grupo de control de Linux para administrar la tarea. Reemplaza al antiguo initd y está disponible en las distribuciones Debian, Fedora, RedHat, ubuntu, centos, arch Linux.

En este artículo, le mostraré cómo crear un servicio usando systemd. Crearé un script manual que actuará como un proceso para encontrar la utilización del disco del sistema Linux.

Empecemos. Cree un script bash que redireccione la fecha y la utilización del disco en un archivo. Puede crear archivos en cualquier ubicación. Aquí lo voy a hacer en el directorio ejecutable /usr/bin

$ sudo vim /usr/bin/script.sh

Copie y pegue el siguiente script y guarde su archivo.

#!/bin/bash

# Script generates disk utilization by the system and store in a file

while true

do

date >> /var/storage-monitor.txt

sudo du -sch / >> /var/storage-monitor.txt

sleep 120

done

Haga que el archivo sea ejecutable ejecutando el siguiente comando.

$ chmod +x /usr/bin/script.sh

Ahora, hagamos un servicio para ejecutar el script. Simplemente cree un archivo en el siguiente directorio. Tenga en cuenta que puede dar cualquier nombre, pero debe terminar con la extensión .service.

$ vim /etc/systemd/system/monitor-disk.service

Y agregue lo siguiente,

[Unit]

Description=My disk monitoring service

Documentation=https://www.kernel.org/

#After=networking.service

[Service]

Type=simple

User=root

Group=root

TimeoutStartSec=0

Restart=on-failure

RestartSec=30s

#ExecStartPre=

ExecStart=/usr/bin/script.sh

SyslogIdentifier=Diskutilization

#ExecStop=

[Install]

WantedBy=multi-user.target

Explicación

  • La sección [Unidad] consta de descripción, detalles de documentación. Aquí mencioné 'Después', que establece que el servicio que vamos a crear debe ejecutarse primero.
  • La sección [Servicio] define el tipo de servicio, nombre de usuario, grupo, qué hacer en caso de falla, tiempo de espera de reinicio. El principal es 'ExecStart' que dice que inicie nuestro archivo de script. También puede definir 'ExecStartPre' para definir cualquier cosa antes del archivo de script real. ‘SyslogIdentifier’ es la palabra clave para identificar nuestro servicio en syslog. De manera similar, ExecStop es la instrucción para decir qué hacer para detener el servicio.
  • La sección [Instalar] se usa para definir diferentes niveles de destino en el sistema.

Simplemente guarde el archivo e inicie el servicio usando el comando systemctl.

$ systemctl start monitor-disk.service

Verifique el estado del servicio usando el comando systemctl status. También puede ver el nombre del servicio, el formulario de archivo donde se carga el servicio systemd, la documentación, el proceso en ejecución y los registros.

$ systemctl status monitor-disk.service

Verifique que su secuencia de comandos funcione correctamente examinando el archivo definido en el archivo de secuencia de comandos.

$ cat /var/storage-monitor.txt

También puede verificar la función habilitar, deshabilitar del administrador systemd.

$ systemctl enable monitor-disk.service
$ systemctl disable monitor-disk.service

Además, verifique deteniendo y reiniciando el servicio. No se debe arrojar ningún error.

$ systemctl stop monitor-disk.service
$ systemctl restart monitor-disk.service

Systemd también habilita el inicio de sesión predeterminado en syslog. Entonces, puede ver el registro en vivo del servicio usando el siguiente comando. Busque la palabra clave 'SyslogIdentifier=Diskutilization'

usted negó en el archivo de servicio anterior.

$ tail -f /var/log/syslog

Conclusión

Este artículo le muestra cómo ejecutar su propio script de shell como un servicio systemd. Esperamos que hayas aprendido a hacer tu propio servicio. No dude en enviar sus comentarios.


Ubuntu
  1. ¿Cómo crear un archivo temporal en Shell Script?

  2. Linux – ¿Ubicación del script Fsck?

  3. ¿Cómo ejecutar un script de Shell en segundo plano?

  4. ¿Cómo ejecutar un script de shell cuando cambia un archivo o directorio?

  5. Cómo ejecutar un script de shell al inicio

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo ejecutar el archivo Jar en Ubuntu Linux

Cómo ejecutar un script al arrancar en Debian 11

Cómo crear y ejecutar un script de Shell en Ubuntu 20.04 LTS

Cómo ejecutar comandos de archivo .sh todo a la vez en Linux

Cómo ejecutar Shell Script como servicio SystemD en Linux