J'essaye de faire un script qui monte automatiquement un apn dès qu'il est branché sur /dev/sda mais j'ai l'impression qu'il ralentit considérablement le système. Comment le rendre moins gourmand en ressource?
Fichier autoapn:
#!/bin/sh
ALREADY=0
while /bin/true
do
dd if=/dev/sda1 of=/dev/null count=1 &>/dev/null
ERR=$?
if [ $ERR = 0 ]
then
if [ $ALREADY = 0 ]
then
xterm -e apn_trouve
ALREADY=1
fi
elif [ $ERR = 1 ]
then
if [ $ALREADY = 1 ]
then
xterm -e apn_debranche
ALREADY=0
fi
fi
sleep 5s
done
Fichier apn_trouve:
#!/bin/sh
dialog --backtitle "AutoAPN" --title "APN Détecté" --yesno "Un APN a été branché sur /dev/sda1. Le monter ?" 10 30
case $? in
0)mount /media/sda1 && MONTE=0;;
1)dialog --backtitle "AutoAPN" --title "APN non monté" --clear --msgbox "L'APN n'a pas été monté" 10 30 ;;
esac
if [ $MONTE = 0 ]
then
DEST="$HOME/photos/`date`"
dialog --backtitle "AutoAPN" --title "Récupération des photos" --clear --yesno "Voulez-vous récupérer vos photos dans $DEST" 10 30
case $? in
0)mkdir -p "$DEST" ;for i in `find /media/sda1 -name "*.jpg"`;do cp $i "$DEST";done;dialog --backtitle "AutoAPN" --title "Photos récupérés" --msgbox "Toutes les photos ont été récupérées" 10 30;;
1)dialog --backtitle "AutoAPN" --clear --title "Photos non récupérés" --msgbox " Aucune photo n'a été récupérée" 10 30;;
esac
fi
Fichier apn_debranche:
#!/bin/sh
dialog --backtitle "AutoAPN" --title "APN Débranché" --msgbox "L'APN a été débranché, il va être démonté" 10 30
umount /media/sda1
(a copier dans /usr/bin avec un chmod +x)
(PS: Le script a été dévelloppé pour une SuSE et utilise donc /media/sda1 comme point de montage. Pour utiliser /mnt ,
# mv /usr/bin/apn_trouve /usr/bin/apn_trouve.old
# mv /usr/bin/apn_debranche /usr/bin/apn_debranche.old
# cat /usr/bin/apn_trouve.old | sed s/media/mnt/g >/usr/bin/apn_trouve
# cat /usr/bin/apn_debranche.old | sed s/media/mnt/g>/usr/bin/apn_debranche
# chmod +x /usr/bin/apn_trouve
# chmod +x /usr/bin/apn_debranche
# Attente active
Posté par Didier (site web personnel) . Évalué à 4.
Tu fais ce que l'on appelle une attente active : ton script teste régulièrement (ici, toutes les 5 secondes) une condition particulière. Ce principe fonctionne, mais son gros défaut est - tu l'as remarqué ;) - l'occupation processeur excessive.
Une autre méthode consiste à s'enregistrer auprès du système d'exploitation (dans ton cas, le noyau Linux) afin que celui-ci te prévienne quand la condition est réalisée. Des programmes font déjà ce que tu souhaites : jette un coup d'½il du côté de hotplug.
[^] # Re: Attente active
Posté par Edouard Gomez (site web personnel) . Évalué à 3.
Je confirme, c'est LA facon de proceder. Hotplug multiplexe tout evennement de plugging ou unplugging du matériel il est donc tout à fait à même de scripter le montage de l'apn losqu'il est branché.
J'utilise moi même cela pour mettre le bon uid:group afin que je puisse me servir de gtkam sans avoir à etre root. Il me semble que le site gphoto montre un exemple de script. Il ne te restera plus qu'à adapter pour monter ton APN, puisqu'il se comporte comme un usb-storage.
Ici pourcomment mettre en place le script, ca te donne une bonne idée de comment tu vas procéder pour ton montage automatique:
http://www.gphoto.org/doc/manual/permissions-usb.html(...)
Je te laisse le soin de dl le source de gphoto2, prendre les scripts dispos et adapter celui qui se rapproche le plus de ton besoin.
J'ai quand même un doute que hotplug puisse gérer ca tout seul, car il voit passer l'evennement de plug USB, mais je ne sais pas s'il intercepte l'arrivée des /dev/sd??. Il faut peut etre aussi que tu creuses du coté de udev. udev permet de par exemple de creer un nommage persistent de tes devices genre /dev/apn qui pointe sur le bon /dev/sd?? quelque soit le cas.
[^] # Re: Attente active
Posté par gc (site web personnel) . Évalué à 2.
Multiplexe ?
# apn
Posté par ccomb (site web personnel) . Évalué à 3.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.