Lancer un programme au demarrage de la raspberry

Bonjour,

Je voudrais lancer un programme python au démarrage de la raspberry pi.
Pour cela j’ai effectué les étapes suivantes:

  1. j’ai rendu executable mon fichier.py
  2. j’ai modifier le srcipt /etc/rc.local en rajoutant la ligne : pyhton « home/pi/Documents/fichier.py » &

Cependant avant de tester si cela marche j’aimerais savoir si une fois mon programme finis, l’interface de base rasbian se lance. En gros j’aimerais être sur que je peux revenir sur un démarrage normal de rasbian et ne pas être bloqué sur mon application quand j’allume ma raspberry.

Salut,

Tu peux éditer le fichier /home/pi/.config/lxsession/LXDE-pi/autostart avec sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
Puis ajouter la ligne @lxterminal --command="./fichier.py"

Normalement, ça fonctionne au démarrage.
Et tu pourras virer la ligne de /home/pi/.config/lxsession/LXDE-pi/autostart pour stopper cet automatisme.

J’ai des scripts auto sur certains Rpi de cette façon.

++

Bonjour,

Le mode d’éxecution de rc.local n’est pas le même en fonction de la version de Raspbian.
Avec init.d (anciennes versions), il est lancé automatiquement en fin de boot par /etc/init.d/rc.local
Avec systemd, on vérifie son lancement avec « systemctl status rc-local ».
Donc être sûr dans un premier temps que rc.local est bien lancé en fin de boot.

Théoriquement rc.local doit toujours se terminer avec un code retour 0 (exit 0)
Pour cela, il est conseillé de lancer les commandes en tâche de fond (non bloquantes) par un « & » en fin de ligne.

Avant de redémarrer le système, il est conseillé avec l’utilisateur root de copier/coller l’intégralité de la commande dans un terminal, afin de valider sa bonne exécution.

Donc dans le cas présent, le fait d’ajouter cette ligne ne doit pas bloquer la séquence de boot.

N.B. : Dans la ligne de commande, il manque « / » avant « home »

Bonne bidouilles
A+

@LauraPerla

Tjrs préférer les infos de @jelopo sur les miennes :slight_smile:
On n’a pas du tout le même niveau côté fonctionnement du moteur :wink:

Mais question @jelopo
Ma solution n’est pas pleinement fonctionnelle ou elle est bizarre ?

Merci beaucoup pour ta réponse rapide. J’ai essayé ta technique et elle marche très bien :slight_smile:
Cependant avec cette méthode mon code est executé après le démarrage complet de la Raspberry Pi (du coup apres que Rasbian est été executé).
Or je voudrait executé mon code en fin de boot.
J’ai pas encore tester la technique de jelopo, je le ferait demain.
Merci encore pour vos réponses :slight_smile:

Ha oui, c’était l’idée dans mon cas en fait … ça devait lancer notamment des choses graphiques une fois le démarrage fait avec affichage du bureau.
Désolé,

Jelopo sera le vainqueur :wink:

@nabla, merci de me donner tant d’honneur!
Mais rassures toi, j’y connais que couik en vidéo. Chacun son domaine de connaissance et de spécialisation.

Rassures-toi ta solution est entièrement valable, pour un environnement graphique je ne la contredit pas du tout.
C’est juste que @LauraPerla avait déjà parlé dans sont point 2 de l’utilisation de rc.local, et j’ai voulu donner des précisions par rapport à ce point, sans vouloir te court-circuiter le moins du monde. Disons que c’est une approche parallèle. :wink: J’aurais certainement du être plus explicite dans mon premier post.

Comme souvent, il n’y a pas qu’un seul chemin pour avoir un résultat.

A+

sudo nano crontab -e

..

@boot python “home/pi/Documents/fichier.py”

ctrl+X
sudo reboot…

?

Au final je suis resté sur ta technique elle marche bien : )
Cependant, il faudrait que j’exécute deux codes en parallèle, du coup j’ai écris à la place :
@lxterminal --command="./fichier1.py & ./fichier2.py"
Mais cela ne marche pas…
Aurait tu une solution ?

ps : quand j’exécute cette commande directement sur le terminal ça marche très bien

coucou et en faisant une 2e ligne dans le cron pour ta 2e app ?

@boot python … 1
@boot python … 2

Courage

Hello,

Technique de bourrin peut-être.
J’ai un script qui exécute 3 actions en 1 seule ligne.

C’est du style

@lxterminal --command="./script-complet.sh"

Où le script nommé « script-complet.sh » est du genre

#!/bin/bash 
bash script01.sh|bash script02.sh|bash script03.sh
done

Je sépare avec « | » et pas avec « & » ou « && » pour dire tu fais et tu fais ceci et tu fais cela et pas de relation entre eux.

Mais je suis loin de maîtriser le domaine :slight_smile:

ça doit être pareil pour du python.

++

Bonjour,

En complément, voici une petite page wiki sur les redirections en Bash et leur utilisation.
https://fr.wikibooks.org/wiki/Programmation_Bash/Flux_et_redirections

Ainsi qu’une sur les enchaînements
https://fr.wikibooks.org/wiki/Programmation_Bash/Enchaînements_et_scripts

C’est vrai RTFM mais après on sait lequel choisir en fonction de ce que l’on souhaite faire pour qu’il nous comprenne :penguin:

Bonne bidouilles
A+

Hello,
Merci pour la lecture.
J’ai parcouru de biais.
J’ai l’impression que je devrais faire

#!/bin/bash 
bash script01.sh ; bash script02.sh ; bash script03.sh
done

Je ferai des tests :wink:

Exact, ce n’est pas une redirection « | », mais un enchaînement « ; » qu’il faut dans ce cas.
Sinon il est aussi possible de lancer les scripts à la suite en tâche de fond comme ceci

#!/bin/bash 
bash script01.sh & 
bash script02.sh &
bash script03.sh &

A+