J'ai construit un réseau de capteurs sans fil composé de deux Raspberry Pi (runnnig Raspbian) avec des capteurs et une station de base Raspberry Pi qui collecte les données.
Chaque fois que je veux exécuter le système, je dois me connecter à chaque unité de capteur et exécuter deux programmes Python en boucle, un pour la collecte des données du capteur et un pour la transmission à la station de base.
Ces unités vont dans des endroits difficiles d'accès sans accès à Internet, donc prendre un moniteur, un clavier et une souris avec moi pour les faire fonctionner n'est pas exactement facile. Existe-t-il un moyen de les configurer pour se connecter automatiquement, exécuter le programme 1, puis exécuter le programme 2 automatiquement au démarrage?
sudo
enrc.local
soi. Il est exécuté avec des privilèges root au démarrage. Assurez-vous de faire attention à la partie concernant l'utilisation, à&
moins que votre programme ne fasse quelque chose rapidement puis se ferme./path/to/somescript.sh &
dansrc.local
et dans le script, ajoutezwhile ! ping -c 1 -W 1 8.8.8.8; do sleep 1; done;
avant de démarrer vos programmes.rc.local
sans exécuter sudo au préalable. Que suggérez-vous?La réponse de Xer0FyT est probablement le moyen le plus simple de démarrer automatiquement un programme sur le PI. Mais des problèmes surviennent une fois que le programme démarré se bloque pour une raison quelconque, car il ne sera pas redémarré, car il n'y a pas de surveillance des processus. Personnellement, je recommanderais plutôt d' utiliser daemontools . C'est assez simple à configurer (et est inclus dans Raspbian). Fondamentalement, vous créez un répertoire de service qui contient un
run
script shell qui démarre votre programme. daemontools s'assurera alors que votre programme est démarré et redémarré en cas de plantage pour une raison quelconque.La configuration de daemontools est assez simple. Juste
Créez ensuite votre répertoire de service contenant un script d'exécution exécutable:
Jetez-y un œil
/service/my-service/run
et modifiez-le pour qu'il démarre votre propre programme au lieu de s'exécuterecho
. Une fois cela fait, créez un lien symbolique vers ce répertoire/etc/service
afin que daemontools le (re) démarre automatiquement:Après environ 5 secondes, votre programme devrait s'exécuter. Vous pouvez le démarrer / l'arrêter en utilisant
Il est également possible de se connecter (par exemple) à syslog. Ainsi, la sortie de votre programme ne se perd pas. J'ai écrit un article de blog plus complet à ce sujet ici: https://info-beamer.com/blog/running-info-beamer-in-production
la source
fermez l'application de configuration LXSession et redémarrez votre pi
votre application java devrait s'exécuter après le redémarrage
la source
Vous avez probablement déjà
cron
installé pour certaines des tâches de ménage du PI.Recherche
man 5 crontab
pour@reboot
.la source
Vous voudrez peut-être faire des recherches
service
. Vous pouvez créer un script d'initialisation qui fait partie de l'initialisation du système et le placer à un niveau d'exécution approprié.Courez
man service
.Voici un guide pour créer des scripts d'initialisation: http://www.novell.com/coolsolutions/feature/15380.html
la source
systemd
plupart des distributions Linux, y compris Raspbian, cette réponse devra être mise à jour si l'OP met à jour leur système afin qu'il prenne le relais de sysVinit
... 8- (Suivez simplement ce lien .
En supposant que vous ayez test.txt sur le bureau, un exemple pourrait être:
et il fonctionne!
la source