Plantage de script shell - Shell/Batch - Programmation
Marsh Posté le 25-08-2005 à 14:00:12
Citation : Lorsque rien n'est branché en USB, /dev/usb/hid/ est vide, donc on ne passe pas dans le for. |
Essaie donc ça pour t'en convaincre :
#!/bin/sh |
Remplace ton for par ceci :
ls /dev/usb/hid | while read I |
Remarque :
if [[ $? == 2 ]] |
Pourquoi les doubles "[" ? De plus, "==" est un opérateur entre chaine de caractères. Utilise -eq plutôt :
if [ $? -eq 2 ] |
Marsh Posté le 25-08-2005 à 16:32:24
Fait un "ulimit -c unlimited", puis lance ton script. Apres le segfault tu devrais avoir un fichier "core" dans le repertoire courant. Fait "file core"... Ca te donne le nom du soft qui a plante.
Marsh Posté le 25-08-2005 à 18:44:00
Grululu a écrit :
|
Vu, je corrigerai ca demain.
matafan a écrit : Fait un "ulimit -c unlimited", puis lance ton script. Apres le segfault tu devrais avoir un fichier "core" dans le repertoire courant. Fait "file core"... Ca te donne le nom du soft qui a plante. |
Heu ca va comme qui dirait pas être possible, ca, le FS est en lecture seule... (et à priori tous ces outils ulimit et file risquent de ne pas être dispo... J'ai droit à un bash et à un busybox allégé à mort...)
Marsh Posté le 25-08-2005 à 13:37:11
Voici le code d'un script shell :
01. #!/bin/sh
02.
03. while true ; do
04. # parcourt de tous les fichiers de peripheriques USB HID
05. # presents dans /dev/usb/hid et lancement du convertisseur
06. # souris sur le premier correspondant a une souris.
07. for I in /dev/usb/hid/* ; do
08. hiddevicetype $I > /dev/null
09. if [[ $? == 2 ]] ; then
10. convertsouris $I /dev/tts/1
11. # Une fois la conversion lancee, elle ne retourne que
12. # si elle est arretee ou si la souris est debranchee.
13. break
14. fi
15. done
16. sleep 1
17. done
Ce script est la pour lancer un programme (convertsouris) quand une souris USB est branchée sur le systeme.
Lorsque rien n'est branché en USB, /dev/usb/hid/ est vide, donc on ne passe pas dans le for.
Dans ce cas (rien de branché), au bout de quelques minutes, le script se plante en mettant :
/etc/Modconv/souris_loop.sh: line 17: 6926 Segmentation fault sleep 1
Une idée de pourquoi je me prends un segfault sur un sleep ?