Lancer un programme lors du boot
Bonjour,
Je travaille actuellement sur un projet consistant à faire bouger un robot à distance par divers moyens. Il s'agit d'un robot "Rapiro" avec un raspberry pi tournant sous debian. Mon objectif immédiat est d'assurer l'envoi de messages depuis un PC extérieur jusqu'à l'arduino qui se trouve connecté au raspberry. Pour cela j'ai codé un très simple serveur en C qui reçoit des messages et les envoie à l'arduino via une connexion série. Ce serveur fonctionne sans aucun souci.
Le problème c'est que je dois le lancer en me connectant au robot via SSH, j'aimerais que ce serveur se lance tout seul au démarrage du robot.
Après quelques recherches, voici les manipulations effectuées:
Ecrire le script bash suivant qui lance le serveur:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| #!/bin/sh
### BEGIN INIT INFO
# Provides: pamplemousse
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# X-Start-Before:
# X-Stop-After:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: launches pamplemousse server.
# Description: UDP Server on port 7777 to receive arduino commands.
### END INIT INFO
echo "pamplemousse_start executed." >> ~/pamplemousse/daemon_log.txt
if [ $# -eq 1 ]; then
case "$1" in
start )
~/pamplemousse/pamplemousse 7777
echo "pamplemousse started." >> ~/pamplemousse/daemon_log.txt;;
stop )
PID=`ps cax | grep pamplemousse | grep -o '^[ ]*[0-9]*'`
kill $PID
echo "pamplemousse stopped." >> ~/pamplemousse/daemon_log.txt;;
restart | force-reload )
PID=`ps cax | grep pamplemousse | grep -o '^[ ]*[0-9]*'`
if [ -z $PID ]; then
echo "pamplemousse is not running."
else
kill $PID
~/pamplemousse/pamplemousse 7777
echo "pamplemousse restarted." >> ~/pamplemousse/daemon_log.txt
fi;;
* )
echo "pamplemousse_start misused:" $1 >> ~/pamplemousse/daemon_log.txt
esac
else
echo "usage: $" $0 "[start/stop/restart/reload/force-reload]"
echo "pamplemousse_start misused." >> ~/pamplemousse/daemon_log.txt
fi
echo "pamplemousse_start completely read." >> ~/pamplemousse/daemon_log.txt |
mettre ce script ("pamplemousse_start.sh") dans le répertoire /etc/init.d
Le rendre éxecutable par un traditionnel chmod +x
A ce moment j'ai fait des tests en éxecutant le script avec les arguments start et stop, il se comporte comme attendu, avec une trace d'éxecution dans le fichier daemon_log.txt.
On en arrive à la création du "lien symbolique" (les guillemets ici indiquent que je ne sais absolument pas dans quoi je fous les pieds ...). Après plusieurs recherches, j'en suis venu à faire ceci:
Code:
pi@raspberrypi /etc/init.d $ sudo update-rc.d pamplemousse_start.sh defaults
Selon ce site: https://www.debian-administration.or...me_with_Debian
J'aurais dû obtenir une sortie ressemblant à peu près à ce machin:
root@skx:~# update-rc.d blah defaults
Adding system startup for /etc/init.d/blah ...
/etc/rc0.d/K20blah -> ../init.d/blah
/etc/rc1.d/K20blah -> ../init.d/blah
/etc/rc6.d/K20blah -> ../init.d/blah
/etc/rc2.d/S20blah -> ../init.d/blah
/etc/rc3.d/S20blah -> ../init.d/blah
/etc/rc4.d/S20blah -> ../init.d/blah
/etc/rc5.d/S20blah -> ../init.d/blah
Mais j'obtiens seulement ça:
pi@raspberrypi /etc/init.d $ sudo update-rc.d pamplemousse_start.sh defaults
update-rc.d: using dependency based boot sequencing
insserv: warning: script 'mathkernel' missing LSB tags and overrides
J'ai essayé également en root, mais même résultat. J'ai essayé avec des scripts d'exemple fournis dans plusieurs tutoriels, toujours le même résultat.
Et s'il est besoin de le préciser: quand je relance le robot, les scripts ne se lancent pas. Ou, dans le jargon: "putain mais pourquoi ça veut pas marcher cette merde ?!".
Pouvez-vous m'aider svp ? Merci d'avance :)