Я построил беспроводную сенсорную сеть, состоящую из двух Raspberry Pi (Runnnig Raspbian) с включенными датчиками и базовой станции Raspberry Pi, которая собирает данные.
Каждый раз, когда я хочу запустить систему, мне приходится входить в каждый сенсорный блок и запускать две петельные программы Python, одну для сбора данных датчика и одну для передачи на базовую станцию.
Эти устройства оказываются в неловких местах без доступа к Интернету, поэтому взять с собой монитор, клавиатуру и мышь для их запуска не совсем просто. Есть ли способ настроить их на автоматический вход в систему, запустить программу 1, а затем автоматически запустить программу 2 при запуске?
sudo
поrc.local
себе. Он запускается с правами root при загрузке. Обязательно обратите внимание на часть об использовании,&
если ваша программа просто не делает что-то быстро, а затем завершает работу./path/to/somescript.sh &
доrc.local
и в сценарии добавьтеwhile ! ping -c 1 -W 1 8.8.8.8; do sleep 1; done;
перед запуском ваших программ.rc.local
без предварительного запуска sudo. Что ты посоветуешь?Ответ от Xer0FyT, вероятно, является самым простым способом автоматического запуска программы на PI. Но проблемы возникают после сбоя запущенной программы по любой причине, потому что она не будет перезапущена, так как отсутствует мониторинг процесса. Я лично рекомендовал бы вместо этого использовать daemontools . Это довольно просто настроить (и входит в Raspbian). По сути, вы создаете каталог службы, который содержит
run
сценарий оболочки, запускающий вашу программу. Затем daemontools позаботится о том, чтобы ваша программа запускалась и перезапускалась в случае сбоя по любой причине.Настройка daemontools довольно проста. Только что
Затем создайте каталог службы, содержащий исполняемый скрипт запуска:
Посмотрите
/service/my-service/run
и отредактируйте его, чтобы он запустил собственную программу вместо запускаecho
. Как только это будет сделано, поместите этот каталог в/etc/service
так, чтобы daemontools автоматически (пере) запустил его:Примерно через 5 секунд ваша программа должна запуститься. Вы можете запустить / остановить его, используя
Также возможно войти в (например) системный журнал. Таким образом, вывод вашей программы не теряется. Я написал более полный пост в блоге об этом здесь: https://info-beamer.com/blog/running-info-beamer-in-production
источник
закройте приложение конфигурации LXSession и перезагрузите ваш пи
Ваше приложение Java должно работать после перезагрузки
источник
Возможно, вы уже
cron
установили некоторые из служебных задач PI.Поиск
man 5 crontab
по@reboot
.источник
Возможно, вы захотите исследовать
service
. Вы можете создать сценарий инициализации, который является частью системного init, и поместить его на соответствующий уровень выполнения.Беги
man service
.Вот руководство по созданию сценариев инициализации: http://www.novell.com/coolsolutions/feature/15380.html
источник
systemd
большинству дистрибутивов Linux, включая Raspbian, этот ответ потребует обновления, если OP обновит свою систему так, чтобы он перенял sysVinit
... 8- (Просто перейдите по этой ссылке .
Предполагая, что у вас есть test.txt на рабочем столе, пример может быть:
и это работает!
источник