Если вы создали приложение 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:>