Als u een Qt-toepassing - of een andere toepassing - voor de Raspberry Pi 4 hebt gemaakt, wilt u vaak dat de toepassing onmiddellijk na het opnieuw opstarten van de Raspberry wordt aangeroepen nadat de toepassing is voltooid.
Dit wordt vaak geprobeerd met startscripts die op verschillende plaatsen kunnen worden ingevoerd.
Het is echter redelijker om dit via systemd in te stellen. Ik heb een raspbian-buster-lite image en een Qt installatie zoals beschreven in Qt op de Raspberry Pi 4 als uitgangspunt gebruikt.
De Qt-toepassing bevindt zich in de map "/home/pi/application" en heeft in dit voorbeeld de naam "application_one".
Een .service-bestand maken
Het eerste wat u moet doen is een .service bestand maken in de map "/etc/systemd/system":
sudo nano application_one.service
Het volgende is nu hier ingevoerd:
[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
De lemma's spreken eigenlijk voor zich. De applicatie "application_one" (ExecStart=/home/pi/application/application_one) wordt gestart met het gebruikersaccount "pi" (User=pi). De vermelding "After=network-online.target" geeft nog steeds aan dat de toepassing wordt gestart totdat de netwerkverbinding tot stand is gebracht.
</:code2:></:code1:>
Maak de service bekend aan het systeem
Vervolgens moet u het systeem vertellen dat de nieuwe service actief moet zijn:
sudo systemctl enable application_one.service
Voer vervolgens een herstart uit en de applicatie zou automatisch moeten starten.
</:code3:>
Aanvraag start niet?
Als de applicatie niet automatisch start, kunt u inloggen met
sudo systemctl status application_one.service
Geef de status weer en gebruik de informatie om problemen op te lossen. </:code4:>