2016-06-16 4 views
2

Я пытаюсь автоматически вызывать программу при загрузке с использованием Bluetooth. Тем не менее, программа вызывается до того, как Bluetooth настроен и запущен.Запуск сценария после настройки и запуска Bluetooth - Rasperry Pi 3

Я попытался назвать программу двумя способами:

  1. Используя скрипт в init.d и зарегистрирован обновление-rc.d с этой линией в INIT: # Required-Start: $all
  2. Calling его из /etc/rc.local

Ни один из них не работает по желанию. Они оба запускают программу, но до того, как Bluetooth настроен и запущен.

Каков наилучший способ заставить скрипт или программу запускаться после Bluetooth?

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

[ OK ] Started Login Service. 
[ OK ] Started Getty on tty1. 
**Where my program is currently executing** 
[ OK ] Started Configure Bluetooth Modems connected by UART. 
[ OK ] Reached Target Bluetooth 
**Where I want my program to be executing** 

Raspbian GNU/Linux 8 tty1 
login: 

ответ

5

Новая система инициализации для Debian 8 «Jessie» - systemd. Старинным способом в Debian 7 «Wheezy» был Sysv с уровнями запуска и /etc/inittab. Недостатком использования crontab для запуска вашей программы будет, если выполнение сценария завершится с ошибкой, оно будет навсегда. Перезапуск скрипта автоматически, если его концы называются «респаун».

Как вы можете видеть, служба Bluetooth работает и печатает, что достигнута «цель». Для того, чтобы создать свой собственный сервис, который работает после BLUETOOTH система запуска и респавнится с Systemd просто создать файл в /etc/systemd/system/ т.е. my_program.service

[Unit] 
Desription=my_program with systemd, respawn, after bluetooth 
After=bluetooth.target 

[Service] 
ExecStart=node /home/pi/workspace/my_program 
Restart=always 

[Install] 
WantedBy=multi-user.target 

и активировать его

systemctl enable my_program.service 

перезагрузку или запустить его вручную

systemctl daemon-reload 
systemctl start my_program.service 

Если кто-то убил процесс или перезагрузился, my_program будет перезапущен автоматически через несколько секунд.

0

Использование кронтаба, я был в состоянии сделать его работу с помощью следующей строки:

@reboot sleep 5 && node /home/pi/workspace/my_program 

Не идеален, но он работает пока. Я открыт для любых лучших ответов.

 Смежные вопросы

  • Нет связанных вопросов^_^