Ich habe ein drahtloses Sensornetzwerk aufgebaut, das aus zwei Himbeer-Pis (runnnig Raspbian) mit eingeschalteten Sensoren und einer Basisstation Raspberry Pi besteht, die die Daten sammelt.
Jedes Mal, wenn ich das System ausführen möchte, muss ich mich bei jeder Sensoreinheit anmelden und zwei sich wiederholende Python-Programme ausführen, eines zum Sammeln von Sensordaten und eines zum Übertragen an die Basisstation.
Diese Geräte befinden sich an unangenehmen Orten ohne Internetzugang. Daher ist es nicht ganz einfach, einen Monitor, eine Tastatur und eine Maus mitzunehmen, um sie zum Laufen zu bringen. Kann ich sie so einrichten, dass sie sich automatisch anmelden, Programm 1 und dann Programm 2 beim Start automatisch ausführen?
sudo
für sichrc.local
selbst verwenden. Es wird beim Booten mit Root-Rechten ausgeführt. Achten Sie unbedingt auf den Teil über die Verwendung, es&
sei denn, Ihr Programm führt etwas schnell aus und wird dann beendet./path/to/somescript.sh &
zurc.local
, und im Skript addwhile ! ping -c 1 -W 1 8.8.8.8; do sleep 1; done;
bevor Ihre Programme zu starten.rc.local
ohne vorher sudo ausgeführt zu haben. Was schlagen Sie vor?Die Antwort von Xer0FyT ist wahrscheinlich die einfachste Möglichkeit, ein Programm auf dem PI automatisch zu starten. Aber Probleme treten auf, wenn das gestartete Programm aus irgendeinem Grund abstürzt, weil es nicht neu gestartet wird, da es keine Prozessüberwachung gibt. Ich persönlich würde empfehlen, stattdessen Daemontools zu verwenden. Es ist ziemlich einfach einzurichten (und in Raspbian enthalten). Grundsätzlich erstellen Sie ein Dienstverzeichnis, das ein
run
Shell-Skript enthält , das Ihr Programm startet. daemontools stellt dann sicher, dass Ihr Programm gestartet und neu gestartet wird, falls es aus irgendeinem Grund abstürzt.Das Einrichten von daemontools ist ziemlich einfach. Gerade
Erstellen Sie dann Ihr Dienstverzeichnis mit einem ausführbaren Ausführungsskript:
Schauen Sie es sich an
/service/my-service/run
und bearbeiten Sie es, damit es Ihr eigenes Programm startet, anstatt es auszuführenecho
. Sobald dies erledigt ist, verknüpfen Sie dieses Verzeichnis mit symlink,/etc/service
damit es von daemontools automatisch (neu) gestartet wird:Nach ca. 5 Sekunden sollte Ihr Programm ausgeführt werden. Sie können es mit starten / stoppen
Es ist auch möglich, sich (zum Beispiel) bei syslog anzumelden. Damit die Ausgabe Ihres Programms nicht verloren geht. Ich habe hier einen vollständigeren Blogeintrag darüber verfasst: https://info-beamer.com/blog/running-info-beamer-in-production
quelle
Schließen Sie die LXSession-Konfigurationsanwendung und starten Sie Ihren Pi neu
Ihre Java-App sollte nach dem Neustart ausgeführt werden
quelle
Sie haben wahrscheinlich bereits
cron
einige Housekeeping-Aufgaben des PI installiert.Suche
man 5 crontab
nach@reboot
.quelle
Vielleicht möchten Sie recherchieren
service
. Sie können ein Init-Skript erstellen, das Teil des Init des Systems ist, und es auf einem geeigneten Runlevel ablegen.Rennen
man service
.Hier finden Sie eine Anleitung zum Erstellen von Init-Skripten: http://www.novell.com/coolsolutions/feature/15380.html
quelle
systemd
diese Antwort aktualisiert werden, da die meisten Linux-Distributionen, einschließlich Raspbian, einen lemmingähnlichen Ansturm verzeichnen, wenn das OP ihr System so aktualisiert, dass es von sysVinit
... 8- (Folgen Sie einfach diesem Link .
Angenommen, Sie haben test.txt auf dem Desktop, könnte ein Beispiel sein:
und es funktioniert!
quelle