Linux: który proces powoduje" zajętość urządzenia " podczas wykonywania umount? [zamknięte]

Linux: który proces powoduje "zajętość urządzenia" podczas wykonywania umount?

Author: MarkusQ, 2009-03-08

12 answers

Spójrz na lsof polecenie (lista otwartych plików) -- może Ci powiedzieć, które procesy przechowują co otwarte. Czasami jest to trudne, ale często coś tak prostego jak sudo lsof | grep (your device name here) może zrobić to za Ciebie.

 93
Author: MarkusQ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-09 11:48:21

Na wszelki wypadek... czasami zdarza się, że wywołujesz umount z terminala, a Twój bieżący katalog należy do zamontowanego systemu plików.

 41
Author: alvatar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-08 19:59:51

Należy użyć polecenia fuser.

Np. fuser /dev/cdrom zwróci pid (y) procesu za pomocą /dev/cdrom.

Jeśli próbujesz odmontować, możesz zabić proces za pomocą przełącznika -k (Zobacz man fuser).

 21
Author: Ben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-02 22:54:43

Sprawdź, czy otwarte urządzenia pętli są zmapowane do pliku w systemie plików za pomocą "losetup-a". Nie pojawią się z lsof lub fuser.

 17
Author: Jay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-04 00:30:39

Sprawdź również /etc/exports. Jeśli eksportujesz ścieżki wewnątrz punktu montowania przez NFS, spowoduje to ten błąd podczas próby odmontowania i nic nie pojawi się w fuser lub lsof.

 15
Author: Malvineous,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-06 11:28:09
lsof +f -- /mountpoint

(as wyświetla listę procesów używających plików montowanych w / mountpoint. Szczególnie przydatny do ustalenia, które procesy używają zamontowanej pamięci USB lub płyty CD / DVD.

 8
Author: mas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-05 17:51:55

Lsof i fuser są rzeczywiście dwoma sposobami na znalezienie procesu, który utrzymuje otwarty plik. Jeśli chcesz tylko, aby umount odniósł sukces, powinieneś zbadać jego opcje-f i-L.

 7
Author: Anonymous,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-08 20:32:11

Właśnie dlatego istnieje "fuser-m / mount / point".

BTW, nie sądzę, aby "fuser "lub" lsof " wskazywały, kiedy zasób jest przechowywany przez moduł jądra, chociaż zwykle nie mam tego problemu..

 4
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-12 21:17:30

Lsof i fuser też nic mi nie dali.

Po procesie zmiany nazw wszystkich możliwych katalogów na .stary i restartujący system za każdym razem po wprowadzeniu zmian znalazłem jeden konkretny katalog (odnoszący się do postfixa), który był odpowiedzialny.

Okazało się, że kiedyś zrobiłem dowiązanie symboliczne z / var/spool /postfix do/disk2/pers/mail/postfix / varspool w celu zminimalizowania zapisów na dysku na głównym systemie plików SDCARD (Wtyczka Sheeva).

Z tym dowiązaniem symbolicznym, nawet po zatrzymaniu usług postfix i dovecot (zarówno ps aux, jak i netstat-tuanp nie pokazały nic związanego) nie udało mi się odmontować /disk2/pers.

Kiedy usunąłem dowiązanie symboliczne i zaktualizowałem pliki konfiguracyjne postfix i dovecot, aby wskazywały bezpośrednio na nowe dirs na /disk2 / pers/, udało mi się pomyślnie zatrzymać usługi i odmontować katalog.

Następnym razem przyjrzę się dokładniej wyjściu:

ls -lR /var | grep ^l | grep disk2

Powyższe polecenie wyświetli rekurencyjnie listę wszystkich dowiązania symboliczne w drzewie katalogów (tutaj zaczynając od / var) i odfiltrowują te nazwy, które wskazują na określony docelowy punkt montowania (tutaj disk2).

 2
Author: captcha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-03 07:51:58

Otwórz pliki

Procesy z otwartymi plikami są zwykłymi winowajcami. Wyświetl je:

lsof +f -- <mountpoint or device>

Jest zaleta używania /dev/<device> zamiast /mountpoint: punkt montowania zniknie po umount -l lub może być ukryty przez nałożony mount.

fuser może być również używany, ale moim zdaniem lsof ma bardziej użyteczne wyjście. Jednak fuser jest przydatny, jeśli chodzi o zabijanie procesów powodujących Twoje dramaty, abyś mógł żyć dalej.

Lista plików na <mountpoint>

fuser -vmM <mountpoint>

Interaktywnie zabija tylko procesy z plikami otwartymi do zapisu:

fuser -vmMkiw <mountpoint>
Po ponownym zamontowaniu tylko do odczytu (mount -o remount,ro <mountpoint>), jest bezpieczne (r), aby zabić wszystkie pozostałe procesy:
fuser -vmMk <mountpoint>

Mountpoints

Winowajcą może być samo jądro. Inny system plików zamontowany na systemie plików, który próbujesz umount spowoduje smutek. Sprawdź z:
mount | grep <mountpoint>/

Dla mocowań loopback sprawdź również wyjście:

losetup -la

Anonimowe iPody (Linux)

Anonymous inodes mogą być tworzone przez:

  • pliki tymczasowe (open z O_TMPFILE)
  • inotify zegarki
  • [eventfd]
  • [eventpoll]
  • [timerfd]
Są to najbardziej nieuchwytne pokemony i pojawiają się w kolumnie lsof'S TYPE jako a_inode (co jest nieudokumentowane w lsof Strona man ).

Nie pojawią się w lsof +f -- /dev/<device>, więc musisz:

lsof | grep a_inode

Za zabicie processes holding anonymous i -ode, see: List current inotify watches (pathname, PID).

 1
Author: Tom Hale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-20 12:53:07

Jeśli nadal nie możesz odmontować lub ponownie zamontować urządzenia Po zatrzymaniu wszystkich usług i procesów za pomocą otwartych plików, może istnieć plik wymiany lub partycja wymiany, która będzie zajęta urządzeniem. To nie pojawi się z fuser lub lsof. Wyłącz zamianę z:

sudo swapoff -a

Możesz sprawdzić wcześniej i pokazać podsumowanie dowolnych partycji wymiany lub plików wymiany za pomocą:

swapon -s

Lub:

cat /proc/swaps

Jako alternatywę dla użycia polecenia sudo swapoff -a, Możesz również wyłączyć swap poprzez zatrzymanie usługi lub systemd jednostki. Na przykład:

sudo systemctl stop dphys-swapfile

Lub:

sudo systemctl stop var-swap.swap

W moim przypadku wyłączenie swap było konieczne, oprócz zatrzymania wszelkich usług i procesów z plikami otwartymi do zapisu, tak że mogłem ponownie zamontować moją partycję główną jako Tylko do odczytu, aby uruchomić fsck na mojej partycji głównej bez ponownego uruchamiania. Było to konieczne na Raspberry Pi uruchomiony Raspbian Jessie.

 1
Author: Simon Gould,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-21 16:57:19

Systemy plików zamontowane na systemie plików, który próbujesz odmontować, mogą powodować błąd target is busy oprócz plików, które są w użyciu. (Na przykład gdy mount -o bind /dev /mnt/yourmount/dev w celu użycia chroot tam.)

Aby dowiedzieć się, które systemy plików są zamontowane na systemie plików, uruchom następujące polecenie:

mount | grep '/mnt/yourmount'

Aby dowiedzieć się, które pliki są używane, skorzystaj z porad sugerowanych już przez innych tutaj:

lsof | grep '/mnt/yourmount'

 0
Author: Slobodan Pejic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-20 14:37:27