Bonjour,
Le 15/12/2011 14:52, Olivier Desportes a écrit :
> Bonjour,
>
> Je reviens vers vous pour le problème de mon collègue Joseph-André. Il
> s'avère que le problème à l'extinction du PC est dû au fait que la
> connexion wifi est gérée au niveau session de gnome. Or le démontage
> des dossiers se fait une fois la connexion coupée, ce qui fait met le
> pc en attente d'un (long) time out pour s'éteindre (1 minute par
> dossier !!!)
> Même en mettant un script de démontage explicite des dossiers samba à
> la fermeture de session, rien n'y fait : la connexion wifi est coupée
> avant toute chose lors de l'extinction du PC.
> Par ailleurs, nous sommes au courant d'une possibilité d'exécuter ce
> même script de démontage lors de l'évènement 'coupure de la connexion
> wifi' dans /etc/NetworkManager/Dispatcher.d/01ifupdown, mais il ne
> veut toujours rien savoir, c'est comme si ce script ne s'exécutait
> pas, et on n'arrive même pas à le tracer.
> Je doute très fortement que nous soyons les seuls à vouloir utiliser
> des partages samba via une connexion wifi, qui pourrait nous guider ?
> On se casse les dents sur ce problème depuis hier matin.....
>
> Merci !
J'ai déjà vu ce problème de démontage "lent" lorsque la source à
disparu. La solution est dans le "man mount":
<extrait>
-l Lazy unmount. Detach the filesystem from the filesystem hierarchy
now, and cleanup all references to the filesystem
as soon as it is not busy anymore. (Requires kernel 2.4.11 or later.)
</extrait>
Tu peux donc écrire un script de démontage, qui utilise l'option "-l"
de "mount" :
umount -l xxxx
Chez moi, j'ai écris ceci pour un problème assez similaire lié à une
VirtualBox :
# Umount share in background mode
# This is needed, due to slowdown when VB is shutdown in snapshot mode
(umount -l "xxx" &) >/dev/null 2>&1
# Wait 3s for umount
for I in `seq -w 1 3`; do
echo -ne '.' ; sleep 1s
done
# Check umount status
if [ -n "`mount|grep "^//.*xxx"`" ]; then
# Umount not finished, force it...
killall -9 umount >/dev/null 2>&1
echo -ne '.' ; sleep 1s
(umount -l xxx" &) >/dev/null 2>&1
echo -ne '.' ; sleep 1s
# Re-check umount status
if [ -z "`mount|grep "^//.*$WIN_D_MOUNT"`" ]; then
# Umount success on 2nd attempt
echo " OK"
else
# Display error message
echo "ERREUR
##### ERREUR: Impossible de démonter xxx"
fi
else
# Umount success on 1st attempt
echo " OK"
fi
Maintenant, à la question "Où mettre un tel script", le mettre dans les
scripts d'init est une bonne idée.
Tu peux utiliser recopier le /etc/init.d/skeleton en
/etc/init.d/mount_custom , et le modifier en customisant la partie "stop".
Pour définir l'ordre de démarrage/arrêt du script (en fait, surtout
l'arrêt), tu mets ceci dans l'entête :
# Required-Start: $local_fs $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
Enfin, pour rajouter le script au mécanisme d'init, lances un :
update-rc mount_custom defaults
Cela aura pour effet que ce script:
- soit lancé en dernier durant la séquence d'init. Cela, on s'en moque
un peu, puisque la partie "start" doit être vide
- soit lancé en PREMIER durant l'arrêt de la machine.
Cordialement,
Olivier
--
~~~~~~~ _____/\_____ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix / _ \/ _ \ Olivier Allard-Jacquin
/ / \ / \ \ Web: http://olivieraj.free.fr/
/___/ / \ \___\ Mail: olivieraj@???
~~~~ ///// ///\\\ \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!