Sposób sprawdzenia to fuser -vm /mnt/dir
, który należy uruchomić jako root. Powie ci, które procesy uzyskują dostęp do punktu podłączenia.
Alternatywą jest lsof /mnt/dir
, która pokaże każdy otwarty plik na wierzchowcu. Znowu najlepiej uruchomić jako root.
Możesz uruchomić dowolny z nich jako inny niż root, ale wtedy dane wyjściowe będą ograniczone do twoich procesów - te od innych użytkowników będą po prostu dyskretnie nie pokazywane, nawet jeśli zapobiegną odmontowaniu systemu plików.
Przykład:
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
Pole „Dostęp” informuje, w jaki sposób można uzyskać do niego dostęp. W tym przypadku jądro używa go jako mounta (duh, ale odmontowanie będzie w porządku tylko z tym). bash
ma go jako bieżący katalog roboczy (będzie musiał przejść cd
do innego katalogu przed odmontowaniem), a gvim ma zarówno bieżący katalog, jak i plik otwarty (będzie musiał zamknąć tego gvima).
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)
Na tym wyjściu możesz zobaczyć bieżące katalogi zarówno dla bash, jak i gvim (jako typ DIR
). Możesz także zobaczyć, który plik gvim ma otwarty do zapisu.
Jak wymusić problem:
fuser
ma -k
opcję, która wyśle sygnał (domyślnie:) SIGKILL
do każdego procesu za pomocą mount. Jest to dość silny sposób, aby powstrzymać wierzchowca przed zajęciem. (I oczywiście uważaj na siebie SIGKILL
!)
umount
ma -l
opcję wykonania leniwego odmontowania. Podłączenie zostanie usunięte z przestrzeni nazw systemu plików (więc /mnt/Zia/src
w tym przykładzie nie będzie go widać pod ), ale pozostanie zamontowane, więc programy uzyskujące do niego dostęp mogą kontynuować. Kiedy ostatni program, który do niego wejdzie, zakończy się, odmontowanie nastąpi.
Jest jeszcze jedna możliwa do naprawienia przyczyna odmontowania, a serwer NFS przestaje działać. Tutaj możesz użyć umount -f
, ale ryzykujesz utratą danych, jeśli to zrobisz. (Klient mógł zapisywać w pamięci podręcznej zapisy, które nie zostały jeszcze potwierdzone przez serwer, i zapisy te zostaną odrzucone. Aplikacje zostały już jednak poinformowane).