Zbudowałem bezprzewodową sieć czujników składającą się z dwóch Raspberry Pi (runnnig Raspbian) z włączonymi czujnikami i stacji bazowej Raspberry Pi, która zbiera dane.
Za każdym razem, gdy chcę uruchomić system, muszę zalogować się do każdej jednostki czujnika i uruchomić dwa zapętlone programy w języku Python, jeden do gromadzenia danych z czujnika i jeden do przesyłania do stacji bazowej.
Jednostki te znajdują się w dziwnych lokalizacjach bez dostępu do Internetu, więc zabranie ze sobą monitora, klawiatury i myszy, aby je uruchomić, nie jest łatwe. Czy mogę skonfigurować je tak, aby automatycznie się logowało, uruchamiało program 1, a następnie uruchamiało program 2 automatycznie podczas uruchamiania?
sudo
wrc.local
sobie. Jest uruchamiany z uprawnieniami roota podczas rozruchu. Pamiętaj, aby zwrócić uwagę na część dotyczącą używania,&
chyba że twój program po prostu zrobi coś szybko, a następnie zakończy działanie./path/to/somescript.sh &
dorc.local
skryptu dodajwhile ! ping -c 1 -W 1 8.8.8.8; do sleep 1; done;
przed uruchomieniem programów.rc.local
bez uprzedniego uruchomienia sudo. Co sugerujesz?Odpowiedź Xer0FyT jest prawdopodobnie najprostszym sposobem automatycznego uruchomienia programu na PI. Ale problemy pojawiają się, gdy uruchomiony program ulega awarii z jakiegokolwiek powodu, ponieważ nie zostanie ponownie uruchomiony, ponieważ nie ma monitorowania procesu. Osobiście poleciłbym zamiast tego używać Daemontools . Jest dość prosty w konfiguracji (i jest zawarty w Raspbian). Zasadniczo tworzysz katalog usług, który zawiera
run
skrypt powłoki, który uruchamia program. daemontools upewni się, że Twój program zostanie uruchomiony i zrestartowany, jeśli nastąpi awaria z jakiegokolwiek powodu.Konfiguracja daemontools jest dość prosta. Właśnie
Następnie utwórz katalog usługi zawierający wykonywalny skrypt uruchamiania:
Obejrzyj
/service/my-service/run
i edytuj, aby uruchamiał własny program zamiast uruchamiaćecho
. Gdy to zrobisz, dowiązanie symboliczne do tego katalogu,/etc/service
aby daemontools automatycznie (ponownie) go uruchomił:Po około 5 sekundach twój program powinien się uruchomić. Możesz go uruchomić / zatrzymać za pomocą
Możliwe jest również zalogowanie się na (na przykład) syslog. Tak więc wyjście twojego programu nie ginie. Bardziej kompletny post na ten temat napisałem tutaj: https://info-beamer.com/blog/running-info-beamer-in-production
źródło
zamknij aplikację konfiguracyjną LXSession i uruchom ponownie komputer pi
Twoja aplikacja Java powinna działać po ponownym uruchomieniu
źródło
Prawdopodobnie już
cron
zainstalowałeś niektóre zadania sprzątania PI.Szukaj
man 5 crontab
dla@reboot
.źródło
Możesz chcieć zbadać
service
. Możesz utworzyć skrypt init, który jest częścią init systemu i ustawić go na odpowiednim poziomie działania.Uruchom
man service
.Oto przewodnik po tworzeniu skryptów inicjujących: http://www.novell.com/coolsolutions/feature/15380.html
źródło
systemd
lemingowym pośpiechu w kierunku większości dystrybucji Linuksa, w tym Raspbian, ta odpowiedź będzie wymagać aktualizacji, jeśli OP zaktualizuje swój system, aby przejął system sysVinit
... 8- (Po prostu wykonaj to link .
Zakładając, że masz plik test.txt na komputerze, przykładem może być:
i to działa!
źródło