Cette question a été posée à plusieurs reprises auparavant, mais je n'ai pas semblé la faire fonctionner en utilisant les informations existantes.
Mon Pi exécute Raspbian. J'ai un script Python nommé dnscheck.py qui boucle pour toujours.
J'en ai besoin pour fonctionner au démarrage. Je sais que je dois créer un fichier .sh contenant quelque chose comme
sudo python dnscheck.py &
Ce que je ne sais pas, c'est où ce fichier doit être ou s'il doit contenir autre chose. Je connais le dossier init.d, mais en voyant l'exemple squelette, j'imagine qu'il devrait y avoir un moyen plus simple de faire cette tâche simple.
Réponses:
Si vous souhaitez contrôler le processus avec des commandes comme démarrer, arrêter, redémarrer, etc. en utilisant le script squelette et le modifier à vos fins pourrait être la meilleure option.
Si vous voulez simplement que le processus démarre, entrez la commande dans
/etc/rc.local
. (Je n'ai pas mon RPi à portée de main, mais j'ai lu en ligne qu'il y a une ligne 'exit 0' là-dedans, vous devriez mettre votre commande au-dessus de cette ligne)la source
rc.local
root. Vous devez également spécifier le chemin complet du script, évidemment. Vous devez également ajouter&
à la fin afin que le script se bifurque, par exemple/path/to/foobar.py &
.&
? Parce que quand je l'utilise sans, tout fonctionne toujours comme prévu.Déplacez votre script (nous l'enregistrerons dans le fichier
dnscheck
) dans/etc/init.d/
et définissez les autorisations pour qu'il puisse être exécuté:Ajoutez des balises d'initialisation LSB en haut de votre script. Vous souhaiterez probablement modifier Required-Start / Stop et les balises de description pour les adapter à votre script.
Créez ensuite les liens symboliques en exécutant
la source
/etc/rc.local
est insuffisant.Il y a bien sûr de nombreuses façons de le faire, mais n'oubliez pas d'utiliser
cron
. Si vous mettez une@reboot
ligne dans votre crontab, cette commande sera exécutée à chaque redémarrage.Pour tester, je viens d'ajouter la ligne suivante à mon utilisateur crontab avec
crontab -e
:@reboot echo "$(date)" >> ~/boot.txt
Le bonus de cette méthode est que vous pouvez appeler le travail comme requis à d'autres intervalles en plus du temps de démarrage, et vous n'avez pas à modifier les scripts d'initialisation.la source
si vous utilisez le fichier rc.local, cela peut être utile pour le dépannage. Vous pouvez ajouter des lignes de journalisation pour consigner les erreurs (stderr) et la sortie de commande (stdout) dans le fichier journal. Selon cet exemple, ce fichier est enregistré dans /tmp/rc.local.log
Lire la suite
la source
Je suis vraiment surpris que les daemontools de djb ne soient pas mentionnés ici. Daemontools effectue une supervision appropriée des processus et vous pouvez ajouter des fonctionnalités intéressantes telles que la journalisation avec rotation automatique. TL; DR si vous n'êtes pas familier avec tout cela, votre processus sera redémarré à chaque échec et démarrera automatiquement lorsque votre Pi s'allumera. C'est génial si vous avez écrit un mauvais programme python qui a des modes de défaillance mais vous ne voulez pas qu'il meure simplement en cas d'erreur.
Installer:
Suivez ensuite les étapes pour créer des processus démonisés:
C'est surtout aussi simple que de copier un
run
script dans un/etc/service/<my_custom_service_name>
autre avantage: vous pouvez exécuter n'importe quel utilisateur ou root! Détails dans le lien.FWIW J'avais un projet Pi où j'avais 3 processus python différents (chacun avait une boucle d'exécution utilisant le temps CPU donc en utilisant 3 processus j'ai permis à chaque processus de tirer parti d'un cœur CPU). Daemontools m'a permis de m'assurer que les 3 s'exécuteraient automatiquement et continueraient de fonctionner après avoir branché le Pi.
la source
Voici la solution que j'utilise constamment.
Créer un fichier de bureau
tapez ce qui suit en elle
collez ce fichier dans le
et redémarrez votre framboise pi et il devrait exécuter automatiquement votre programme dans un nouveau terminal
la source
Pour utiliser un fichier .py, placez simplement la ligne
#!/usr/bin/python
au tout début de votre fichier. Rendez-le ensuite exécutable avecchmod +x filename
. Ensuite, ajoutez la ligne/path/to/file.py &
à/etc/rc.local
avant laexit 0
ligne (échange/path/to/file.py
avec le chemin de votre script). Cela fera exécuter votre script python à la fin du démarrage.la source
Voici une méthode encore plus simple qui a fonctionné pour moi. Modifiez le démarrage automatique dans LXDE.
Ouvrez un terminal et modifiez le fichier de démarrage automatique comme suit:
ajoutez la ligne de texte suivante en bas (modifiez le chemin d'accès à l'endroit où se trouve votre exemple.py)
ctr-x et enregistrez. Vous devrez peut-être rendre le script python exécutable comme suit:
référence pour le démarrage automatique dans LXDE et référence pour rendre exécutable python
la source
ces solutions n'ont pas fonctionné pour moi en essayant de démarrer un script python avec l'exécution de Feh. Ce qui suit a fonctionné. Il démarre un script après la connexion.
Ouvrez une session de terminal et modifiez le fichier
sudo nano /etc/profile
Ajoutez la ligne suivante à la fin du fichier
/home/pi/your_script_name.sh
remplacez le nom et le chemin du script par le nom et le chemin corrects de votre script de démarrage. Sauvegarder et quitter
Appuyez sur Ctrl + X pour quitter l'éditeur nano, puis sur Y pour enregistrer le fichier.
Voici à quoi ressemblait mon script.sh:
Je pense que j'ai fait à la fois l'exécutable script.sh et script.py en utilisant le chmod
la source