Raspberry Pi 4 autostart aplikacji Qt podczas uruchamiania systemu

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