Lancer un script au démarrage

[Fermé]
Signaler
Messages postés
5
Date d'inscription
mardi 7 octobre 2014
Statut
Membre
Dernière intervention
13 octobre 2014
-
Messages postés
5
Date d'inscription
mardi 7 octobre 2014
Statut
Membre
Dernière intervention
13 octobre 2014
-
Bonjour à tous !

J'essaye de lancer un script au démarrage de mon débian (raspbian pour être plus précise, je suis sur raspberry).

Voici mon script :

#! /bin/sh
# /etc/init.d/script_auto_run

### BEGIN INIT INFO
# Provides: skeleton
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $portmap
# Should-Stop: $portmap
# X-Start-Before: nis
# X-Stop-After: nis
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Example initscript
# Description: This file should be used to construct scripts to be
# placed in /etc/init.d.
### END INIT INFO


case "$1" in
start)
echo "Starting..."
cd /home/pi/demo_app/
sudo ./demo_app&
;;

stop)
echo "Stop..."
;;

*)
exit 1
;;
esac

exit 0


1- Je le place dans /etc/init.d/
2- Je le rends exécutable avec sudo chmod 755 script_auto_run
3- Quand j'essaye de le tester avec sh script_auto_run start ça marche
4- Je colle les liens avec update-rc.d script_auto_run defaults (rien à signaler)

Sauf que quand je démarre, il me fait absolument n'importe quoi. Le programme en lui même envoie de simples commandes en série (beaucoup) et ce que je reçois c'est du charabi si je puis dire... sachant que lorsque je le lance à partir du shell manuellement, le programme fonctionne très bien.

Est ce que ça a un rapport avec l'exécution en mode root ? Vous avez une astuce pour changer ça d'ailleurs ?

Merci :)

1 réponse

Messages postés
315
Date d'inscription
mercredi 23 octobre 2013
Statut
Membre
Dernière intervention
28 avril 2016
54
Salut,

Pour ce que tu fais, tu peux lancer ton script sans les arguments (start ou stop), vu que le stop ne fait rien :

#!/bin/sh

sudo /home/pi/demo_app/demo_app&

exit 0


Ensuite tu lance la commande
update-rc.d script_auto_run defaults
Messages postés
5
Date d'inscription
mardi 7 octobre 2014
Statut
Membre
Dernière intervention
13 octobre 2014

Quand je retire le point juste après sudo, il me rend la main immédiatement et n'exécute que les premières lignes du script...
Messages postés
315
Date d'inscription
mercredi 23 octobre 2013
Statut
Membre
Dernière intervention
28 avril 2016
54
Peux-tu mettre le script complet ?

C'est assez étonnant de mettre la commande sudo dans un script qui est lancé au démarrage car de toute façon il sera lancé en root. Tu devrais enlever sudo et laisser le chemin absolu de demo_app.
Messages postés
5
Date d'inscription
mardi 7 octobre 2014
Statut
Membre
Dernière intervention
13 octobre 2014

Au temps pour moi, avec un cd juste avant ça fonctionne.

Le script se lance au démarrage mais le comportement est étrange. Le programme communique avec un écran et il envoie n'importe quoi, il y a tout et rien qui s'affiche... ça peut avoir un rapport avec l'exécution en mode root ?

Merci :)
Messages postés
5
Date d'inscription
mardi 7 octobre 2014
Statut
Membre
Dernière intervention
13 octobre 2014

Voici mon script :

#! /bin/sh
# /etc/init.d/script_auto_run

### BEGIN INIT INFO
# Provides: skeleton
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $portmap
# Should-Stop: $portmap
# X-Start-Before: nis
# X-Stop-After: nis
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Example initscript
# Description: This file should be used to construct scripts to be
# placed in /etc/init.d.
### END INIT INFO


cd /home/pi/demo_app
./demo_app
exit 0

J'ai bien le script qui s'exécute au démarrage mais mon application affiche n'importe quoi. J'ai des rayures sur mon écran et les icônes m'affichent des grisailles. J'ai l'impression que mon écran (qui communique en série) reçoit des choses au démarrage qui le font buguer. Sachant que dans mon programme, j'ouvre une communication série au tout début...
Messages postés
5
Date d'inscription
mardi 7 octobre 2014
Statut
Membre
Dernière intervention
13 octobre 2014

ça marche !

J'ai du suivre ceci :

Pour supprimer l'utilisation de l'UART du démarrage, il faut éditer le fichier /boot/cmdline.txt, supprimer la partie en rouge :

/boot/cmdline.txt Avant : dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait Après : dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Merci de ton aide :)