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/name_script.service
				
			

ed inseriamo il seguente contenuto:

				
					[Unit]
Description=NAME_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/name_script.pid

[Install]
WantedBy=multi-user.target
				
			

non dimenticate di modificare name_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
				
			

Sei un appassionato di dispositivi innovativi?

Caronte Consulting progetta e realizza sistemi hardware e software nel campo dell’Industria 4.0, dotati di una sofisticata ed efficace Intelligenza Artificiale.

I nostri dispositivi sono realizzati su misura alle esigenze del Cliente e permettono di automatizzare completamente i processi industriali, ottimizzando la produzione e creando un risparmio di materie prime e di consumi energetici.