Se hai creato un'applicazione Qt - o qualsiasi altra applicazione - per Raspberry Pi 4, spesso vuoi che l'applicazione venga chiamata immediatamente dopo aver riavviato il Raspberry dopo che l'applicazione è stata completata.
Questo è spesso tentato con script di avvio che possono essere inseriti in varie posizioni.
Tuttavia, è più ragionevole impostarlo tramite systemd . Ho usato un'immagine raspbian-buster-lite e un'installazione Qt come descritto in Qt sul Raspberry Pi 4 come punto di partenza.
L'applicazione Qt si trova nella directory "/home/pi/application" ed è denominata "application_one" in questo esempio.

Creazione di un file .service

La prima cosa da fare è creare un file .service nella directory "/etc/systemd/system":

sudo nano application_one.service

Ora viene inserito quanto segue:

[Unit]
Description=Qt application autostart
After=graphical.target
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/application
ExecStart=/home/pi/application/application_one

[Install]
WantedBy=multi-user.target

Le voci sono in realtà autoesplicative. L'applicazione "application_one" (ExecStart=/home/pi/application/application_one) viene avviata con l'account utente "pi" (User=pi). La voce "After = network-online.target" indica ancora che l'applicazione viene avviata fino a quando non viene stabilita la connessione di rete.

</:code2:></:code1:>

Rendere noto il servizio al sistema

Quindi devi dire al sistema che il nuovo servizio dovrebbe essere attivo:

sudo systemctl enable application_one.service

Quindi eseguire un riavvio e l'applicazione dovrebbe avviarsi automaticamente.

</:code3:>

L'applicazione non si avvia?

Se l'applicazione non si avvia automaticamente, è possibile accedere con

sudo systemctl status application_one.service

Visualizzare lo stato e utilizzare le informazioni per la risoluzione dei problemi. </:code4:>

Walter Prechtl

Walter Prechtl

Aggiornato a: 08. March 2024
Tempo di lettura: 2 minuti