Yakshi
Posts: 5
Joined: Sat Mar 18, 2017 7:14 pm

[RESOLU] Lancement d'un script au démarrage du RPI

Sat Mar 18, 2017 7:28 pm

Bonjour à tous,

Je sais que ce sujet à été abordé à de nombreuse reprises, mais je rencontre un problème.
Avant toute chose, je souhaite préciser que je suis un gros débutant en Raspberry. C'est mon premier jour sur ce nouveau jouet ! :)

Alors, comme indiqué ci-dessus, je n'arrive pas à exécuter un script au démarrage de mon RPI.
J'ai vu sur internet qu'il faut :

- Rendre le script executable : sudo chmod +x /chemin/vers fichier/scriptaexecuter.py (Ca c'est fait)
- Editer le fichier /etc/rc.local : sudo nano /etc/rc.local
- Ajouter avant exit 0 : python "/home/pi/scriptaexecuter.py" &

Tout ça c'est fait, mais ça ne fonctionne pas. Mon script n'est pas en cours d'exécution une fois démarré. Par contre, le script démarre correctement en l'exécutant manuellement comme ceci : python "/home/pi/scriptaexecuter.py" &

J'ai vu sur internet quelqu'un qui demandé s'il avait bien rc.local qui était exécuté... Je ne sais pas si c'est le cas pour moi ni comment activer l'exécution si nécessaire.

Help please ! :)

Merci.
Last edited by Yakshi on Sun Mar 19, 2017 11:31 pm, edited 1 time in total.

ernesto
Posts: 117
Joined: Thu Jul 19, 2012 10:09 am

Re: Lancement d'un script au démarrage du RPI

Sun Mar 19, 2017 7:17 am

Pour comprendre ce qui se passe tapez la commande suivante:
/etc/rc.local
Cela va lancer le script /etc/rc.local qui devrait lancer ton script (python "/home/pi/scriptaexecuter.py" &).

Yakshi
Posts: 5
Joined: Sat Mar 18, 2017 7:14 pm

Re: Lancement d'un script au démarrage du RPI

Sun Mar 19, 2017 2:30 pm

Effectivement quand je tape la commande /etc/rc.local ça démarre bien mon script. Du coup, ça veut dire que mon rc.local ne s'exécute pas au démarrage ? Je pensais que c'était le cas de base sur les Raspberry ?

Une idée pour le lancer au démarrage ?

jelopo
Posts: 1442
Joined: Wed Oct 17, 2012 7:53 pm

Re: Lancement d'un script au démarrage du RPI

Sun Mar 19, 2017 3:17 pm

Bonjour,

Jusqu'à l'avant dernière version de Raspbian (Raspbian GNU/Linux 7 (wheezy)) le système démarrait avec sysvinit, le rc.local était lu systématiquement en fin de processus de démarrage système.
Depuis Raspbian est issu de la version 8 de Debian (jessie) qui elle démarre avec systemd, a priori le rc.local n'est plus lu.
(je dis a priori, car je n'ai pas migré mes Rpi de la version 7 à la version 8 :oops: )

Pour connaître son système de démarrage, taper :

Code: Select all

ps -p 1
Si le résultat de la colonne CMD est "systemd" on est sous systemd si on a "init" on est sous sysvinit.

Maintenant pour vérifier et activer rc.local au démarrage, il faut faire ceci :

Code: Select all

sudo systemctl status rc-local
sudo systemctl enable rc-local
A+

Yakshi
Posts: 5
Joined: Sat Mar 18, 2017 7:14 pm

Re: Lancement d'un script au démarrage du RPI

Sun Mar 19, 2017 4:11 pm

Merci pour vos réponses !

Alors, quand je tape

Code: Select all

ps -p 1
j'ai effectivement comme retour :

Code: Select all

  PID TTY          TIME CMD
    1 ?        00:00:02 systemd
Par contre, quand j'exécute les commandes que tu m'a indiqué, ça ne semble pas fonctionner mais je ne comprends pas le retour...

Quand je tape :

Code: Select all

sudo systemctl status rc-local
Ca me dit :

Code: Select all

● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static)
  Drop-In: /etc/systemd/system/rc-local.service.d
           └─ttyoutput.conf
   Active: failed (Result: exit-code) since dim. 2017-03-19 15:53:47 UTC; 8min ago
  Process: 506 ExecStart=/etc/rc.local start (code=exited, status=203/EXEC)

mars 19 15:53:47 raspberrypi systemd[1]: rc-local.service: control process exited, code=exited status=203
mars 19 15:53:47 raspberrypi systemd[1]: Failed to start /etc/rc.local Compatibility.
mars 19 15:53:47 raspberrypi systemd[1]: Unit rc-local.service entered failed state.

Warning: Unit file changed on disk, 'systemctl daemon-reload' recommended.
Puis quand je tape

Code: Select all

sudo systemctl enable rc-local
j'ai :

Code: Select all

The unit files have no [Install] section. They are not meant to be enabled
using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
   .wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
   a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
   D-Bus, udev, scripted systemctl call, ...).
------------------

EDIT : J'ai trouvé ce lien : https://www.linuxbabe.com/linux-server/ ... th-systemd je vais tester !!
EDIT 2 : La manip indiqué dans le lien ci-dessus n'a pas fonctionné. J'ai bien crée le fichier /etc/systemd/system/.rc-local.service.swp avec le contenu indiqué dans la procédure, mais le problème reste identique !

ernesto
Posts: 117
Joined: Thu Jul 19, 2012 10:09 am

Re: Lancement d'un script au démarrage du RPI

Sun Mar 19, 2017 7:58 pm

Je viens de tester sur une installation toute fraiche de jessy lite de 2017-03-02 et /etc/rc.local fonctionne très bien.
Je vous conseil (si cela est possible) de repartir sur une nouvelle sd bien clean :) .

Yakshi
Posts: 5
Joined: Sat Mar 18, 2017 7:14 pm

Re: Lancement d'un script au démarrage du RPI

Sun Mar 19, 2017 9:26 pm

Ok, je vais tester ça e tje vous tiens au courant.

Merci !

Yakshi
Posts: 5
Joined: Sat Mar 18, 2017 7:14 pm

Re: Lancement d'un script au démarrage du RPI

Sun Mar 19, 2017 11:31 pm

Aah super après réinstallation complète, ça fonctionne ! J'avais du bidouiller quelque chose ...

Merci à tous ! :D

JumpZero
Posts: 894
Joined: Thu Mar 28, 2013 7:35 pm
Location: 127.0.0.1

Re: [RESOLU] Lancement d'un script au démarrage du RPI

Mon Mar 20, 2017 6:48 pm

Bonsoir,
Je confirme que sans rien changer sur Raspbian Jessie /etc/rc.local s’exécute bien.
Je suis un grand utilisateur de /etc/rc.local ;-)
Par contre ce qui a changé avec systemd c'est que la règle bien établie sous init system V "rc.local est le dernier script qui s’exécute a l'init" n'est plus vrai! D'ailleurs de base sur Raspbian ce script contient une ligne qui affiche l'adresse IP. Sous Wheezy cette ligne apparaissait juste au-dessus du prompt le login, ce n'est plus le cas avec Jessie et systemd qui lance tout en parallèle. Vous avez sans doute aussi noté ce détail (un peu gênant a mon gout).
Et aussi quand systemd lance rc.local le réseau n'est généralement pas encore prêt, donc s'il y a des appels a des ressources réseau... plouf, sauf si l'option "wait for network" (nom a vérifier) a été activée dans raspi-config (elle a ete ajoutée a cause de ça justement)
--
Jmp0

Return to “Français”