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:>