40 votes

Le périphérique sshfs est occupé

J'ai monté un système de fichiers distant en utilisant sshfs (version 2.8.4)

sshfs -o allow_root joeuser@example.com: ./example

mais le démontage échoue

> fusermount -u example
umount: /home/joeuser/example: périphérique occupé.
        (Dans certains cas, des informations utiles sur les processus utilisant
         le périphérique peuvent être trouvées avec lsof(8) ou fuser(1))

Avez-vous des idées sur ce qui pourrait causer cette erreur et comment la corriger?

58voto

Chris Points 1779

Je pense que vous voulez un démontage paresseux :

sudo umount -l example

17voto

Un programme utilise un fichier dans le système de fichiers que vous essayez de démonter. Il pourrait s'agir d'un fichier ouvert en lecture ou en écriture, d'un répertoire actuel, ou de quelques cas plus obscurs. Cela pourrait même être dû à un répertoire sur le système de fichiers étant un point de montage.

Pour enquêter, exécutez lsof +f -- exemple. Il vous dira quel(s) processus utilise(nt) le système de fichiers. Faites votre propre jugement quant à savoir s'il faut leur demander de fermer les fichiers, les tuer, ou retarder l'opération de démontage.

6voto

ctn Points 161

J'avais juste ce problème et je ne pouvais pas kill -9 le processus lisant à partir du système de fichiers monté. kill -9 ne fonctionnait même pas après fusermount -zu /point/de/montage ou umount -l /point/de/montage (qui a fonctionné). La seule chose qui a fonctionné était pkill -9 sshfs.

3voto

Hibou57 Points 131

En exécutant Ubuntu, man fusermount parle d'une option -z, qui est documentée comme “déconnexion paresseuse”. Il semble que cela soit lié, mais nécessite une confirmation, qui est donnée par cette autre page man: fusermount (man.he.net), qui indique “déconnexion paresseuse (fonctionne même si la ressource est toujours occupée)”. Il faut l'utiliser avec le -u, l'option -z seule produira une erreur. J'ai essayé l'option -z, et je peux confirmer que cela fonctionne, mais cela ressemble trop à un tour: que fait-elle exactement? Est-elle démontée automatiquement dès que le répertoire n'est plus occupé? Je ne sais pas, ce n'est pas documenté, donc risqué.

Voici donc une autre option, plus verbeuse, mais plus sûre: essaie de démonter jusqu'à ce que cela réussisse, autant de fois que nécessaire, dans une boucle.

echo -n "Démontage...";
fusermount -u -q "$MOUNT_POINT";
OK="$?";

while [ "$OK" != "0" ]
do
   sleep 1;
   echo -n ".";
   fusermount -u -q "$MOUNT_POINT";
   OK="$?";
done

echo;

Il y a un feedback minime, pour savoir ce qui se passe et éviter de croire que ça a planté.

Cette option est acceptable dans un script shell; pour une interaction en ligne de commande, l'utilisation de l'option -z est plus pratique, mais il faut probablement être conscient que la page man ne la documente pas et qu'il peut y avoir des doutes sur ce qu'elle fait exactement.

2voto

juliekoubova Points 1760

Je vois souvent "appareil occupé" avec sshfs lorsque j'ai une fenêtre de terminal ouverte sur un répertoire partagé en sshfs. Quitter le terminal ou changer de répertoire vers un partage local puis exécuter fusermount -u résout mes problèmes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X