Raspberry Pi 4 автоматически запускает приложение Qt во время загрузки

Если вы создали приложение Qt - или любое другое приложение - для Raspberry Pi 4, вы часто хотите, чтобы приложение вызывалось сразу после перезапуска Raspberry после завершения приложения.
Это часто делается с помощью сценариев запуска, которые можно вводить в разных местах.
Тем не менее, более разумно настроить это через systemd . В качестве отправной точки я использовал образ raspbian-buster-lite и установку Qt, как описано в Qt на Raspberry Pi 4 .
Приложение Qt находится в каталоге "/home/pi/application" и в этом примере называется "application_one".

Создание служебного файла

Первое, что нужно сделать, это создать файл .service в каталоге "/etc/systemd/system":

sudo nano application_one.service

Теперь здесь введено следующее:

[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

Записи на самом деле говорят сами за себя. Приложение "application_one" (ExecStart=/home/pi/application/application_one) запускается с учетной записью пользователя "pi" (User=pi). В записи «After=network-online.target» по-прежнему указано, что приложение запускается до тех пор, пока не будет установлено сетевое подключение.

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

Сделайте службу известной системе

Затем вы должны сообщить системе, что новая служба должна быть активна:

sudo systemctl enable application_one.service

Затем выполните перезагрузку, и приложение должно запуститься автоматически.

</:code3:>

Приложение не запускается?

Если приложение не запускается автоматически, вы можете войти в систему с помощью

sudo systemctl status application_one.service

Отображение состояния и использование информации для устранения неполадок. </:code4:>