Próbuję wykonać skrypt, gdy uruchamia się mój Raspberry Pi. Chciałbym, aby przeglądarka internetowa otworzyła się automatycznie.
Próbowałem znaleźć proste rozwiązanie (np. Upuszczenie skryptu w katalogu „startowym” lub coś podobnego), ale nic takiego nie widzę.
Zajrzałem do Upstart , ale staram się zrozumieć, jak to działa. Wszystkie skrypty, które próbowałem, nie działały podczas ich testowania.
.xinitrc
lub.xsession
pliku.Odpowiedzi:
Aby uruchomić Midori podczas uruchamiania, zapoznaj się z tym samouczkiem . Rozwiązania dla majsterkowiczów - czytaj dalej.
Możesz dodać komendę wykonywalną skryptu na dole,
.bashrc
która spowoduje uruchomienie skryptu za każdym razem, gdy otworzysz terminal (lub uruchomisz nową instancjębash
) .Upewnij się, że jesteś w
pi
folderze:Utwórz plik i napisz skrypt do uruchomienia w pliku:
Zapisać i wyjść: Ctrl+ X, Y,Enter
Otwórz
.bashrc
do konfiguracji:Przewiń w dół i dodaj wiersz:
./superscript
Zapisać i wyjść: Ctrl+ X, Y,Enter
Jeśli szukasz rozwiązania, które działa przy uruchamianiu konsoli , spójrz na ten link . Podstawowe podsumowanie:
Utwórz plik dla skryptu uruchamiania i napisz skrypt w pliku:
Zapisać i wyjść: Ctrl+ X, Y,Enter
Ustaw skrypt jako wykonywalny:
Zarejestruj skrypt, który będzie uruchamiany przy starcie:
Jeśli chcesz, aby skrypt był uruchamiany podczas uruchamiania systemu LXDE , możesz zapoznać się z postem na forum Raspberry Pi :
Nawigować do
~/.config/lxsession/LXDE-pi
Otwórz
autostart
plik w tym folderze:Dodaj
@midori
w nowym wierszu. Jeśli chcesz uruchomić coś w rodzaju skryptu python, umieść coś@python mypython.py
w nowym wierszu. Uruchomienie pliku skryptu byłoby@./superscript
, ale z jakiegoś powodu skrypt działa w nieskończonej pętli (być może to to powstrzyma).Zapisać i wyjść: Ctrl+ X, Y,Enter
Uruchom ponownie Raspberry Pi w środowisku LXDE.
źródło
$ sudo startx
?.bashrc
nie jest odczytywany podczas uruchamiania systemu lub podczas logowania użytkownika , tylko podczas otwierania nowego terminala (i jest odczytywany za każdym razem, gdy użytkownik otwiera nowy terminal). Jestem zaskoczony, że ta odpowiedź uzyskała tyle głosów poparcia: pierwsza część jest po prostu błędna . Trzecia część jest poprawna do wykonania programu GUI.Sposób, w jaki widziałem większość ludzi (zajrzyj na fora Raspberry Pi) i osiągnąłem sukces, to wykorzystanie
/etc/rc.local
.Wszystko, co musisz tutaj zrobić, to umieścić
./myscript
plik tekstowy rc.local. Jeśli jest w Pythonie, wstawpython myscript.py
.To dosłownie „proste rozwiązanie (jak upuszczenie mojego skryptu w katalogu„ startowym ”lub coś podobnego)” - być może przeszukujesz fora również w przypadku pytań, to rozwiązanie pojawiło się na pierwszych 4 wynikach wyszukiwarka Google!
źródło
python myscript.py
. Jeśli chcesz chmod + x go i dodać#! /bin/python
, możesz uruchomić skrypt, robiąc$pathtofile/myscript.py
gdzie$pathtofile
jest,.
jeśli jesteś w tym samym katalogu lub bezwzględną lub względną ścieżkę do pliku./etc/rc.local
służy tylko do uruchamiania usług systemowych (programów, które nie mają interfejsu użytkownika).Dodaj to do crontab
Crontab uruchamia polecenia w określonych momentach.
Edytuj plik:
Dodaj wiersz do pliku (tutaj skrypt Pythona):
źródło
python3
), patrz tutaj/etc/rc.local
służy tylko do uruchamiania programów, które nie mają interfejsu użytkownika.Automatyczne uruchamianie aplikacji xorg
Jeśli skrypt, który chcesz uruchomić, wymaga sesji xorg, możesz spróbować postępować zgodnie ze specyfikacją autostartu Freedesktop, która może działać lub nie, w zależności od używanego środowiska pulpitu.
Alternatywnie możesz kierować reklamy na określone środowisko pulpitu zgodnie z opisem na https://wiki.archlinux.org/index.php/autostarting .
Uruchamianie skryptu jako usługi systemowej
Jeśli twój skrypt pasuje do opisu demona lub „usługi”, a twój system działa systemd, tak jak w przypadku raspbian i najnowocześniejszych linuksów, możesz skonfigurować skrypt, aby działał jako usługa systemowa - zapewnia to szczegółową kontrolę nad środowisko cyklu życia i wykonania, a także warunki wstępne (ponownego) uruchomienia skryptu, takie jak uruchomiona i uruchomiona sieć. Możliwe jest również skonfigurowanie restartu usługi w przypadku awarii (
Restart=always
i opóźnienia między restartem npRestartSec=10
.).Do użytku ogólnosystemowego utwórz plik jednostki systemowej pod
/etc/systemd/system
, np .vim /etc/systemd/system/autossh.service
:Zobacz też:
[
unit
] konfiguracja[
service
] konfiguracjaTeraz jesteśmy gotowi do przetestowania usługi:
Sprawdzanie statusu usługi:
Zatrzymywanie usługi:
Po sprawdzeniu, że usługa działa zgodnie z oczekiwaniami, włącz ją za pomocą:
źródło
Chcę wrzucić moje dwa centy, chociaż jest to stare pytanie, ale często proszone o zrobienie prostej rzeczy - autostart. Wypróbowałem wszystkie sugerowane rozwiązania we wszystkich odpowiedziach na to pytanie. Żaden z nich nie pracował dla mnie. Używam Raspberry PI Model 2 z Raspbian.
Jedynym sposobem, w jaki mogę sprawić, by moja aplikacja uruchomiła się automatycznie, jest skrypt w następujący sposób. Mówię z powodzeniem, ponieważ moja aplikacja została uruchomiona zgodnie z oczekiwaniami, bez żadnych problemów, takich jak rozpoczęcie od niewłaściwej ścieżki pracy.
1. Utwórz pusty plik z rozszerzeniem .sh i nadaj mu dowolną nazwę.
2. Skopiuj i wklej poniższe DOKŁADNIE, z wyjątkiem zmiany „nazwa aplikacji” na właśnie utworzoną nazwę skryptu.
Następnie zapisz plik skryptu w folderze aplikacji
Następnie otwórz
/home/pi/.config/autostart
folder. W twoim przypadku może być inaczej. Wystarczy otworzyć folder domowy i włączyć wyświetlanie ukrytych folderów. otwarte.config/autostart
. Jeśli nie widzisz folderu autostartu, utwórz folder o nazwie autostart w folderze .config.w folderze autostartu musisz utworzyć skrót do pliku skryptu, który utworzyłeś w następujący sposób. Utwórz pusty plik z rozszerzeniem
.desktop
.Kopiuj i wklej następujący w pustym pliku na pulpicie z wyjątkiem trzeba będzie zmienić
Comment
,Name
,Exec
,Path
iIcon
wartość pola.Zapisz i zamknij plik po zmianie wszystkich niezbędnych pól. Gotowe. Po prostu przetestuj to.
źródło
/usr/local/bin/ApplicationName
...?home
jeśli jest to oddzielne urządzenie) nie wystąpił problem z plikiem skryptu (lub plikiem wykonywalnym), gdy plik system nie powraca do/bin/sh
powłoki pojedynczego użytkownika ! Obecniesystemd
sposobem jest zamontowanie obu,/
a/usr
przed uruchomieniem PID 1 ...Miałem też z tym problem. Na Raspberry Pi3 z systemem Raspbian zrobiłem to:
źródło
Na Raspberry Pi3 z Raspbian Stretch zrobiłem to:
Edytuj plik autostartu LXDE-pi
Dodaj to na dole tego pliku
zapisz i uruchom ponownie
źródło
Metoda 1:
Aby uruchomić polecenie automatycznie podczas logowania, umieść je w pliku o nazwie
w katalogu użytkownika (na przykład / home / pi)
Na przykład plik może zawierać
uruchomić Chromium na pełnym ekranie, wskazując na www.google.com
Metoda 2:
To rozwiązanie działa naprawdę dobrze. Po załadowaniu przeglądarki w lewym górnym rogu ekranu pojawia się mały czarny kwadrat, który wydaje się być ogólnym błędem (wspomnianym na forach przez innych), ale poza tym tryb pełnoekranowy ukrywa wszystko oprócz strony przeglądarki.
Edytuj plik autostartu:
Skomentuj wszystko, używając „#” na początku każdej linii, a następnie dodaj następujące linie
Automatycznie uruchom przeglądarkę
W razie potrzeby skorzystaj z narzędzia konfiguracyjnego, aby włączyć automatyczne uruchamianie GUI po włączeniu zasilania
Jeśli musisz wyjść z powrotem do wiersza polecenia CTRL+ ALT+F1
CTRL+ ALT+F2
źródło
Możesz umieścić swój skrypt na dole
/etc/profile
pliku.Inne opcje nie działały dla mnie, ale może dlatego, że umieściłem skrypt na pulpicie.
źródło
utwórz plik .sh za pomocą poleceń „python /path/to/your/script.py” wpisz „sudo nano /etc/rc.local” i wpisz ścieżkę do pliku .sh
przed
Lub możesz po prostu wpisać
lub
jeśli chcesz, aby skrypt działał podczas uruchamiania
wewnątrz pliku wpisz
źródło
to działa. (Przy każdym ponownym uruchomieniu automatycznie przygotowuje następujące zgłoszenia)
źródło
Tak zazwyczaj robię.
Edytuj plik:
sudo nano .bashrc
Idź na koniec pliku i napisz:
sudo python mycode.py
Jeśli chcesz, aby dane wyjściowe były przechowywane w pliku txt, edytuj kod w kroku 3 w następujący sposób:
sudo python mycode.py >> output.py
Mam nadzieję że to pomoże!
źródło