Eseguire uno script in Python come un Servizio - Caronte Consulting

Eseguire uno script in Python come un Servizio

Ecco una breve guida su come eseguire uno script Python all’avvio di Linux

In questo articolo, vi spiegheremo come eseguire in maniera semplice uno script Python all’avvio di Linux. Infatti, inserire uno script a servizio è molto utile qualora volessimo costruire un dispositivo (ad esempio una RTU) che all’avvio del sistema operativo inizi a catturare dati. Inoltre, il servizio è estremamente comodo da avviare o fermare con una sola riga di comando.

Lo script, Start.sh e Stop.sh

Supponiamo che il nostro script Python da eseguire sia posizionato nella cartella:

/home/pi/Script/MyScript.py

A questo file dobbiamo aggiungere altri due file: Start.sh e Stop.sh. Il file Start.sh servirà ad avviare lo script, mentre il file Stop.sh servirà a fermare lo script. Iniziamo a creare i file aprendo il terminale e digitando:

touch Start.sh
sudo pico Start.sh

inseriamo il contenuto:

#!/bin/bash
/usr/bin/python /home/pi/Script/MyScript.py

per salvare premiamo CTRL+O, premiamo Invio e poi chiudiamo con CTRL+X. Settiamo i permessi al file come segue:

chmod a+x Start.sh

Adesso creiamo il file Stop.sh come segue:

$ touch Stop.sh
$ sudo pico Stop.sh

inseriamo il contenuto:

#!/bin/bash
for KILLPID in `ps ax | grep ‘MyScript’ | awk ‘{print $1;}’`; do
kill -9 $KILLPID;
done

salviamo premendo CTRL+O, premiamo Invio e poi chiudiamo con CTRL+X. Settiamo i permessi al file come segue:

chmod a+x Stop.sh

Come si può facilmente notare, il codice ferma in maniera violenta lo script, stroncando istantaneamente la sua esecuzione.

Lo script come servizio

Adesso creiamo un servizio che lanci lo script all’avvio del sistema operativo. Sempre dal terminale lanciamo il seguente comando:

sudo pico /etc/systemd/system/nome_script.service

ed inseriamo il seguente contenuto:

[Unit]
Description=NOME_SCRIPT service
After=network.target

[Service]
Type=simple
ExecStart=/bin/bash /home/pi/Script/Start.sh
ExecStop=/bin/bash /home/pi/Script/Stop.sh
Restart=always
RestartSec=5
TimeoutSec=60
RuntimeMaxSec=infinity
PIDFile=/tmp/nome_script.pid

[Install]
WantedBy=multi-user.target

non dimenticate di modificare nome_script con un nome abbinato al vostro script. Salviamo premendo CTRL+O, poi premiamo Invio e poi chiudiamo con CTRL+X. A questo punto lanciamo gli ultimi comandi:

sudo systemctl enable /etc/systemd/system/nome_script.service
sudo systemctl daemon-reload
sudo service nome_script start

A questo punto il vostro script sarà messo a servizio e sarà avviato. Per verificare la presenza di errori o meno, potete lanciare questo comando:

sudo service nome_script status

Per stoppare lo script, potete lanciare il comando:

sudo service nome_script stop

Scopri i nostri dispositivi intelligenti da Industria 5.0

Il nostro obiettivo è quello di migliorare e rendere più sicuri i processi industriali grazie a dispositivi intelligenti personalizzati sul cliente.

Condividi la tua opinione