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:
mettre ce script ("pamplemousse_start.sh") dans le répertoire /etc/init.d
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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:
Selon ce site: https://www.debian-administration.or...me_with_Debian
Code : Sélectionner tout - Visualiser dans une fenêtre à part pi@raspberrypi /etc/init.d $ sudo update-rc.d pamplemousse_start.sh defaults
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![]()
Partager