J'ai un petit réseau local qui a une boîte Gentoo et une boîte Windows. Je monte un partage provenant de la boîte Windows sur la boîte Gentoo avec une commande comme:
mount -t cifs -o username=WindowsUsername,password=thepassword,uid=pistos //192.168.0.103/Users /mnt/windowsbox
La plupart du temps, tout fonctionne, et je peux lire et écrire sans problème. Cependant, toutes les quelques semaines environ, la connexion ou le point de montage semble se bloquer ou se bloquer, de sorte que tout processus qui tente d'accéder au point de montage se bloque en état D (disque ou attente d'E / S). Ces processus deviennent imperméables aux signaux TERM et KILL. Déconnecter et reconnecter la boîte Windows du réseau n'aide pas. L'état gelé dure plus de 5 minutes. C'est vraiment frustrant et gêne le travail normal, car il fige les dialogues, les ls
commandes, etc. Si j'émets un umount
sur le point de montage, il se bloque également ou signale que le point de montage est en cours d'utilisation. Finalement, l'état mort se résout automatiquement et le point de montage est démonté, ou il devient possible de le faire umount
sans délai.
Je suppose que cela se produit lorsque la connexion / le montage est devenu inactif ou lorsque la machine Windows est inactive. Je ne suis pas vraiment sûr.
Pourquoi cela se produit-il et que puis-je faire pour l'empêcher? Ou comment puis-je réussir à tuer ces processus d'état D à volonté?
Peut-être lié: les supports CIFS restent en lecture
Réponses:
Vous ne savez pas pourquoi le problème se produit, mais comme solution de contournement, avez-vous essayé de mettre quelque chose comme
touch /mnt/windowsbox/keepalive.txt
ouecho "I am still alive." >/mnt/windowsbox/keepalive.txt
d'être exécuté via cron toutes les minutes? De cette façon, la connexion doit rester active.la source
*/5 * * * *
dans le programme crontabJe rencontre aussi cela tous les quelques mois.
sudo umount -l
est ma solution. /programming//a/96288/2097284la source
Une autre réponse potentielle a suggéré d'écrire dans un fichier sur le support à intervalles réguliers via cron. Je suggérerais plutôt d'utiliser le programme smbclient pour vous connecter au partage et vous déconnecter.
J'ai écrit un script bash comme celui-ci pour accomplir cela:
Cette commande établit une nouvelle connexion au partage, puis exécute la commande exit, arrêtant immédiatement la connexion qu'elle vient d'établir sur la ligne de commande. Il doit y avoir 8 barres obliques avant le nom du serveur et 4 avant le nom de partage, car les barres obliques inverses doivent être échappées et les échappements doivent être échappés lorsqu'ils sont à l'intérieur d'une chaîne entre guillemets doubles. Peut-être existe-t-il une façon plus intelligente de procéder, mais cela semble fonctionner.
Il y a peut-être un moyen de rendre cela encore plus fiable en lui faisant maintenir la connexion ouverte pendant plusieurs minutes à la fois, mais c'est un peu hors de ma ligue.
la source
//servername/sharname
est donc beaucoup plus facile dans les endroits où vous avez besoin de beaucoup de s'échapper.