Jeśli utworzyłeś aplikację Qt - lub jakąkolwiek inną aplikację - dla Raspberry Pi 4, często chcesz, aby aplikacja została wywołana natychmiast po ponownym uruchomieniu Raspberry po zakończeniu aplikacji.
Jest to często podejmowane za pomocą skryptów startowych, które można wprowadzić w różnych miejscach.
Jednak bardziej rozsądne jest ustawienie tego za pomocą systemd . Użyłem obrazu raspbian-buster-lite i instalacji Qt opisanej w Qt na Raspberry Pi 4 jako punktu wyjścia.
Aplikacja Qt znajduje się w katalogu "/home/pi/application" i w tym przykładzie nosi nazwę "application_one".
Tworzenie pliku .service
Pierwszą rzeczą do zrobienia jest utworzenie pliku .service w katalogu "/etc/systemd/system":
sudo nano application_one.service
W tym miejscu wprowadzono następujące informacje:
[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
Wpisy są w rzeczywistości oczywiste. Aplikacja "application_one" (ExecStart = / home/pi/application/application_one) jest uruchamiana z kontem użytkownika "pi" (User=pi). Wpis "After=network-online.target" nadal stwierdza, że aplikacja jest uruchamiana do momentu nawiązania połączenia sieciowego.
</:code2:></:code1:>
Powiadamianie systemu o usłudze
Następnie musisz poinformować system, że nowa usługa powinna być aktywna:
sudo systemctl enable application_one.service
Następnie wykonaj ponowne uruchomienie, a aplikacja powinna uruchomić się automatycznie.
</:code3:>
Aplikacja nie uruchamia się?
Jeśli aplikacja nie uruchomi się automatycznie, możesz zalogować się za pomocą
sudo systemctl status application_one.service
Wyświetl stan i użyj informacji do rozwiązywania problemów. </:code4:>