RASPBIAN – ESECUZIONE AUTOMATICA DI SCRIPT E APPLICAZIONI

A partire da Raspbina Jessie in poi, la strada corretta per avviare automaticamente al boot uno script, un comando o un’applicazione è il gestore di sistema e di servizi per Linux, systemd. Fornisce un manager di sistema e servizi che è avviato con PID 1 e si occupa di avviare il resto dei servizi e delle funzionalità di sistema.

Step di Configurazione

La procedura di configurazione passa per i seguenti 2 step:
1. Creare uno unit file che istruisca systemd su cosa e come eseguire.
2. Aggiornare la configurazione di systemd in maniera che recepisca le direttive del nostro unit file.

Creiamo il nostro unit file

Uno unit file non è altro che un file di configurazione che istruisce systemd cosa vogliamo avviare e come. Gli unit files sono tutti posizionati nella cartella di sistema /etc/systemd/system/.

Creiamo il nostro primo unit file con il comando

sudo touch /etc/systemd/system/myScript.service

andando a sotituire a “myScript” il nome del nostro script o un qualche nome che ci ricordi lo script o l’applicazione che vogliamo eseguire.

A questo punto possiamo procedere ad editare il nostro unit file con l’editor di nostro gradimenti (es vi, nano, ecc) e vi copiamo quanto segue:

Description=Descrizione del mio script.
Documentation=
After=multi-user.target

[Service]
Type=simple
WorkingDirectory=<percorso assoluto della directory in cui trovo lo script>
ExecStart=<percorso assoluto dello script da eseguire>

[Install]
WantedBy=multi-user.target

Personalizziamo i campi Description, WorkingDirectory e ExecStart secondo le nostre esigenze. Ad esempio se lo script da eseguire si chiama myScript.sh e si trova nella home directory dell’utente pi allora il mio unit file diviene:

Description=Descrizione del mio script.
Documentation=
After=multi-user.target

[Service]
Type=simple
WorkingDirectory=/home/pi/
ExecStart=/home/pi/myScript.sh

[Install]
WantedBy=multi-user.target

Completate le modifiche allo unit file, salviamo il tutto e procediamo ad aggiornare i permessi di accesso al file con il comando

chmod 777 /etc/systemd/system/<unit file>

Aggiorniamo systemd

A questo punto siamo pronti ad aggiornare systemd. Per interagie con systemd abbiamo a disposizione l’utility systemctl

Come prima cosa dobbiamo far artecipe systemd del nuovo unit file imponendogli di andare a ricontrollare la cartella /etc/systemd/system/ che li contiene

sudo systemctl daemon-reload

Questa operazione sarà da rieseguire ogni volta che aggiungiamo eliminiamo o modifichiamo uno unit file.

Infine abilitiamo l’esecuzione del nostro servizio con:

sudo systemctl enable <unit file senza il suffisso service>

Se tutto si è svolto secondo i piani il nostro script dovrebbe essere stato avviato da systemd.

Se in futuro volessimo (magari temporaneamente) disabilitare il nostro servizio possiamo usare il comando:

sudo systemctl disable <unit file senza il suffisso service>

Controllo delle applicazioni eseguite con systemd.

Completata la fase di configurazione potremo utilizzare l’utility service per avviare, stoppare, riavviare e verificare lo stato dei nostri servizi (applicazioni/script eseguiti automaticamente).

  • In particolare:
  •  Per avviare manualmente un servizio usciamo il comando sudo service <mio servizio> start.
  •  Per stoppare un servizio usciamo il comando sudo service <mio servizio> stop.
  •  Per riavviare un servizio usciamo il comando sudo service <mio servizio> restart.
  •  Per verificare lo stato di esecuzione un servizio usciamo il comando sudo service <mio servizio> status.

References e link utili