Спосіб перевірки полягає в тому fuser -vm /mnt/dir
, який повинен бути запущений як root. Він підкаже, які процеси отримують доступ до точки монтажу.
Альтернативою є те lsof /mnt/dir
, що буде показано кожен відкритий файл на горі. Знову найкраще запустити як root.
Ви можете запустити будь-яке з них як некореневе, але тоді вихід буде обмежений вашими процесами - ті, що надходять від інших користувачів, просто мовчки не відображатимуться, хоча вони не дозволять відключити файлову систему.
Приклад:
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
Поле "доступ" повідомляє вам про доступ до нього. У цьому випадку ядро використовує його як кріплення (duh, але відключення буде гаразд лише з цим). bash
має це як поточний робочий каталог (доведеться cd
переходити в інший каталог, перш ніж відключити), і у gvim обидва є поточна директорія та відкритий файл (потрібно буде закрити цей 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)
На цьому виході ви можете побачити поточні каталоги як для bash, так і для gvim (як тип DIR
). Ви також можете побачити, який файл gvim відкритий для запису.
Як змусити проблему:
fuser
є -k
опція, яка надсилатиме сигнал (за замовчуванням:) SIGKILL
до кожного процесу за допомогою кріплення. Це досить потужний спосіб запобігти зайнятості кріплення. (І звичайно, будьте обережні, що ви SIGKILL
!)
umount
є -l
можливість виконати ледачий відключення. Монтаж буде видалено з простору імен файлової системи (тому ви більше не бачите його /mnt/Zia/src
в прикладі), але він залишається змонтованим, тому програми, що отримують доступ до нього, можуть продовжувати це робити. Коли остання програма, що отримує доступ до неї, закривається, деактивація дійсно відбудеться.
Є одна остаточна виправлена причина відключення несправності, і це NFS-сервер знижується. Тут ви можете використовувати umount -f
, але ви ризикуєте втратою даних, якщо це зробите. (Клієнт, можливо, кеширує записи, які ще не були підтверджені сервером, і ці записи будуть відкинуті. Проте програми вже сказали, що запис успішний.)