Raspbian Jessie: скрипт запуска не работает

Raspbian Jessie: скрипт запуска не работает

Я запускаю Raspbian Jessie Lite на RPi3. Я создал файл в /etc/systemd/system/autostart.service:

[Unit]
Description=Application

[Service]
User=root
ExecStart=/home/pi/autostart.sh

[Install]
WantedBy=multi-user.target

Служба правильно включена и фактически запущена. Вот исходный код моего скрипта запуска:

#!/bin/sh
aplay -c2 -r48000 -fS16_LE < /dev/zero &
chmod 1777 /tmp
hciconfig hci0 up
/home/pi/bin/./app

Мое приложение выполняется, но ведет себя странно, при этом запуск его из root-консоли /home/pi/bin/./appне приводит к проблемам. Более того, конечно, скрипт autostart.shостается в выполнении до тех пор, пока мое приложение не завершится.

Чтобы исправить обе проблемы, я пробовал запустить его в фоновом режиме, добавив &в конце. Или просто пытался перенаправить вывод в файл, добавив &> /home/pi/log.txt. В обоих случаях мое приложение больше не выполняется!

Что я упускаю?

решение1

Вам может не хватать следующих вещей:

  1. Добавьте Type=oneshotв раздел [Service]. Нет необходимости делать его фоновым, и перенаправление вывода в файл в любом случае не сработает в файле конфигурации. Вывод уже захвачен и перенаправлен с помощью ключа StandardOutput, который по умолчанию отправляет его в журнал systemd.

  2. Кроме того, простое создание файла не делает его исполняемым, его также необходимо включить. Запустить

    systemctl enable autostart
    

Я также отмечу, что в конечном итоге вы запустите /home/pi/bin/appего как root, что может быть не тем, что вам нужно для безопасности. Если нет необходимости запускать его как root, рассмотрите возможность запуска приложения как другого пользователя.

Связанный контент