systemd, configurar un script como servicio.

5710 단어 linuxsystemd
Ya hace algún tiempo que systemd está entre nosotros y, parece que no tiene intención de desaparecer, ya que ha sidooptado por la mayoria de distribuciones linux. Así que será mejor que nos hagamos a la idea y empecemos aceptarlo como un compañero más que estará entre nosotros.

Para romper el hielo, nada mejor que hacer una prueba de concepto y definir nuestro propio servicio.

Procederemos a crear el script que queremos ejecutar como servicio, que aunque con poca utilidad, nos permitirá comprobar el correcto funcionamiento de nuestra configuración.

#!/bin/bash

# La única finalidad de este script es probar el proceso
# de configuración de un servicio en systemd.

# Enviamos mensaje inforamtivo del inicio de nuestro servicio.
echo "mi-servicio.service   *** iniciando ***" | systemd-cat -p info

# realizamos un loop infinito que mantendrá nuestro escript en ejecución.
# Grabaremos la hora cada minuto en el log del sistema.
while true; do
   ahora=$(date '+%Y-%m-%d %H:%M:%S') 
   echo "mi-servicio: $ahora" | systemd-cat -p info
   sleep 60
done


Aunque no es requisito que se encuentre en alguna ubicación concreta, lo copiaremos a/usr/local/bin que es el sitio recomendado para la instalación de nuestros programas.

sudo cp mi-servicio.sh /usr/local/bin


Naturalmente, tenemos que asegurarnos que sea ejecutable.

sudo chmod +x /usr/local/bin/mi-servicio.sh


Ahora, deberemos crear el fichero de configuración del servicio dentro del directorio/etc/systemd/system/que por convención lo llamaremos mi-servicio.service, pero antes, nos aseguraremos que no se esté utilizando ya este nombre.

sudo systemctl list-unit-files --type=service


Como seguramente la lista será larga, podemos optar por filtrar la salida del comando.

sudo systemctl list-unit-files --type=service | grep mi-servicio


Si no aparece nada, podremos utilizar el nombre elegido. Así que, seleccionamos nuestro editor 가장 좋아하는 편집자:

[Unit]
Description=Mi servicio super-útil

[Service]
ExecStart=/usr/local/bin/mi-servicio.sh

[Install]
WantedBy=multi-user.target


Aunque Existen muchos más parametros disponibles, nos hemos limitado a especificar el minimo essential, que en este caso proporcionan una descripción, indican el programa a ejecutar y que esté disponible cuando el sistema se inus.

Como ya hemos convenido, lo salvaremos con el nombre/etc/systemd/system/mi-servicio.service

No se requiere que el fichero sea ejecutable, pero si es muy 편리한 변경 사항.

sudo chmod 640 /etc/systemd/system/mi-servicio.service


Vamos a ver que tal pinta tiene lo realizado

sudo systemctl status mi-servicio


Si obtenemos algo parecido a lo siguiente, será indicativo de que el fichero de configuración es correcto.

● mi-servicio.service - Mi servicio super-útil
   Loaded: loaded (/etc/systemd/system/mi-servicio.service; disabled; vendor preset: enabled)
   Active: inactive (dead)


Si es así, ya tenemos nuestro servicio, que podremos administrar como cualquier otro. Procedamos는 iniciarlo를 pues합니다.

sudo systemctl start mi-servicio


Si todo ha ido bien, cuando miremos su status, tendrá un aspecto like a la siguiente:

sudo systemctl status mi-servicio



● mi-servicio.service - Mi servicio super-útil
   Loaded: loaded (/etc/systemd/system/mi-servicio.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-09-13 01:12:27 CEST; 25s ago
 Main PID: 17095 (mi-servicio.sh)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/mi-servicio.service
           ├─17095 /bin/bash /usr/local/bin/mi-servicio.sh
           └─17117 sleep 60

sep 13 01:12:27 P1912 systemd[1]: Started Mi servicio super-útil.
sep 13 01:12:27 P1912 cat[17116]: mi-servicio: 2020-09-13 01:12:27


유레카 !!! 테네모스 누에스트로 세르비시오 푼시오난도.

좋은 웹페이지 즐겨찾기