Lancer un script au démarrage

Fermé
aida_e2s Messages postés 5 Date d'inscription mardi 7 octobre 2014 Statut Membre Dernière intervention 13 octobre 2014 - 7 oct. 2014 à 11:52
aida_e2s Messages postés 5 Date d'inscription mardi 7 octobre 2014 Statut Membre Dernière intervention 13 octobre 2014 - 13 oct. 2014 à 16:24
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 :)
A voir également:

1 réponse

CptRomaiin Messages postés 315 Date d'inscription mercredi 23 octobre 2013 Statut Membre Dernière intervention 28 avril 2016 58
8 oct. 2014 à 18:50
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
0
aida_e2s Messages postés 5 Date d'inscription mardi 7 octobre 2014 Statut Membre Dernière intervention 13 octobre 2014
13 oct. 2014 à 15:01
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...
0
CptRomaiin Messages postés 315 Date d'inscription mercredi 23 octobre 2013 Statut Membre Dernière intervention 28 avril 2016 58
13 oct. 2014 à 15:13
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.
0
aida_e2s Messages postés 5 Date d'inscription mardi 7 octobre 2014 Statut Membre Dernière intervention 13 octobre 2014
13 oct. 2014 à 15:26
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 :)
0
aida_e2s Messages postés 5 Date d'inscription mardi 7 octobre 2014 Statut Membre Dernière intervention 13 octobre 2014
13 oct. 2014 à 15:55
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...
0
aida_e2s Messages postés 5 Date d'inscription mardi 7 octobre 2014 Statut Membre Dernière intervention 13 octobre 2014
13 oct. 2014 à 16:24
ç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 :)
0