Il modo per verificare è fuser -vm /mnt/dir
, che deve essere eseguito come root. Ti dirà quali processi accedono al punto di montaggio.
Un'alternativa è lsof /mnt/dir
, che mostrerà ogni file aperto sul mount. Di nuovo, esegui meglio come root.
Puoi eseguire uno di questi come non root, ma l'output sarà limitato ai tuoi processi: quelli di altri utenti non verranno mostrati silenziosamente, anche se impediranno di smontare il filesystem.
Esempio:
Watt:~# fuser -vm /mnt/Zia/src
USER PID ACCESS COMMAND
/mnt/Zia/src: root kernel mount /mnt/Zia/src
anthony 24909 ..c.. bash
anthony 25041 F.c.. gvim
Il campo "accesso" indica come accedervi. In questo caso, il kernel lo ha usato come mount (duh, ma smontare andrà bene solo con questo). bash
lo ha come directory di lavoro corrente (dovrà cd
smontare in un'altra directory prima di smontare) e gvim ha entrambi la directory corrente e ha un file aperto (dovrà chiudere quel gvim).
Watt:~# lsof /mnt/Zia/src
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 24909 anthony cwd DIR 0,26 12288 3527682 /mnt/Zia/src/perl (zia.vpn.home:/home/anthony/src)
gvim 25041 anthony cwd DIR 0,26 12288 3527682 /mnt/Zia/src/perl (zia.vpn.home:/home/anthony/src)
gvim 25041 anthony 6u REG 0,26 16384 3526219 /mnt/Zia/src/perl/.utf8.c.swp (zia.vpn.home:/home/anthony/src)
In questo output, puoi vedere le directory correnti sia per bash che per gvim (come tipo DIR
). Puoi anche vedere quale file gvim ha aperto per la scrittura.
Come forzare il problema:
fuser
ha -k
un'opzione che invierà un segnale (predefinito:) SIGKILL
a ciascun processo usando il mount. Questo è un modo piuttosto efficace per impedire che la cavalcatura sia occupata. (E ovviamente, stai attento a quello che tu SIGKILL
!)
umount
ha -l
un'opzione per eseguire un smontaggio pigro. Il mount verrà rimosso dallo spazio dei nomi del filesystem (quindi non lo vedrai /mnt/Zia/src
più sotto , nell'esempio) ma rimane montato, quindi i programmi che accedono ad esso possono continuare a farlo. Quando si chiude l'ultimo programma che accede ad esso, lo smontaggio avverrà effettivamente.
Esiste un'ultima causa risolvibile di errore di smontaggio, che è un server NFS inattivo. Qui puoi usare umount -f
, ma rischi di perdere i dati se lo fai. (Il client potrebbe avere scritture memorizzate nella cache che non sono state ancora confermate dal server e tali scritture verranno scartate. Tuttavia, alle app è già stato detto che la scrittura ha esito positivo.)