Распбиан Джесси: сценарий запуска не работает
Я использую 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
Мое приложение выполняется, но имеет странное поведение при запуске его из корневой консоли как /home/pi/bin/./app
не приводит к проблеме. Кроме того, конечно, autostart.sh
Сценарий остается в исполнении, пока мое приложение не закончится.
Чтобы исправить обе проблемы, я попытался запустить его в фоновом режиме, добавив &
в конце. Или просто попытался перенаправить вывод на добавление файла &> /home/pi/log.txt
, В обоих случаях мое заявление больше не выполняется!
Что мне не хватает?
1 ответ
Вы можете пропустить эти вещи:
добавлять
Type=oneshot
в раздел [Сервис]. Нет необходимости в фоновом режиме, и перенаправление вывода в файл в любом случае не будет работать в файле конфигурации. Вывод уже захвачен и перенаправлен с использованиемStandardOutput
ключ, по умолчанию отправляющий его в системный журнал.Кроме того, простое создание файла не приводит к выполнению, вы также должны включить его. Бежать
systemctl enable autostart
Я также отмечу, что вы бежите /home/pi/bin/app
как root, что может быть не тем, что вы хотите для безопасности. Если нет необходимости запускать его от имени пользователя root, рассмотрите возможность запуска своего приложения от имени другого пользователя.