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.
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.
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>
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>
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).
sudo service <mio servizio> start
.sudo service <mio servizio> stop
.sudo service <mio servizio> restart
.sudo service <mio servizio> status
.