Nie można wysunąć woluminu, ponieważ jest on aktualnie używany

100

Po pracy z zewnętrznym dyskiem kopii zapasowej USB chcę czysto odmontować dysk. Po naciśnięciu przycisku „wysuwania” Finder ostrzega mnie komunikatem:

  • Nie można wysunąć woluminu, ponieważ jest obecnie w użyciu ”.

lub

  • DyskNazwa dysku ”nie został wysunięty, ponieważ może go używać co najmniej jeden program. ”.

lub podczas próby użycia terminala: umount /Volumes/Diskname

  • umount (/ Volumes / Diskname): Zasób zajęty - spróbuj„ diskutil unmount ”

O ile mi wiadomo, nie używam tego dysku, ale Finder mówi, że tak, więc muszę się mylić. Wolę czysty odmontowanie dysku. Ponieważ jestem w trakcie wykonywania wielu zadań, wylogowywanie się i logowanie nie jest preferowane, podobnie jak instalacja oprogramowania innych firm.

Przydałoby się tu polecenie terminalu lsof, ale osobiście uważam, że jest to zbyt skomplikowane, aby można było na niego „z łatwością”, i szczerze mówiąc, nie wiem, jak właściwie z niego korzystać.

Moje pytanie: Skąd mam wiedzieć, który program używa mojego dysku, aby poprawnie wyjść z tego programu i wysunąć dysk?

Nie można wysunąć woluminu, ponieważ jest on aktualnie używany. Dysk „Camel” nie został wysunięty, ponieważ może go używać co najmniej jeden program. Dysk „Mammtoh” nie został wysunięty, ponieważ jeden lub więcej programów ... xkcd

Kuzyn Kokaina
źródło
2
„O ile mi wiadomo, nie używam tego dysku, ale Finder mówi, że tak, więc muszę się mylić.” Za bardzo ufasz maszynom. ;-) Często komputery się mylą, a my ludzie mamy rację.
Nicolas Barbulesco
Więc mówisz, że mam rację? ;)
CousinCocaine
2
A jeśli winowajcą jest Spotlight, zaoszczędź sobie trochę powtórzeń: apple.stackexchange.com/a/211616/15417
John2095,

Odpowiedzi:

130

lsofjest rzeczywiście najlepszym wyborem. Najszybszy i najłatwiejszy sposób to: -

sudo lsof /Volumes/myDrive

Uruchomienie może potrwać kilka minut, ale po jego zakończeniu wyświetla listę otwartych plików na dysku. Dane wyjściowe będą wyglądać mniej więcej tak:

COMMAND    PID  USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
mds         89  root   19r   DIR   52,3      432     2 /Volumes/Photos
mds         89  root   23r   DIR   52,3      432     2 /Volumes/Photos
Finder     681 alans   14r   DIR   52,3      432     2 /Volumes/Photos
QuickLook 2158 alans    9r   REG   52,3  1141591 78651 /Volumes/Photos/_tmp_iphone_10_backup/APC_1546.JPG  

W tym przypadku jest to QuickLookaplikacja, która ma otwarty plik. Bezpośrednie zamknięcie aplikacji jest najlepszym sposobem na rozwiązanie tego problemu. Jednak nie zawsze jest to możliwe. Na przykład QuickLook nie wyświetla się jako aplikacja, do której można dostać się w Docku.

Jeśli nie możesz ręcznie zamknąć aplikacji, możesz użyć killpolecenia, aby zakończyć działanie z wiersza polecenia. Aby to zrobić, użyj PIDz drugiej kolumny jako identyfikatora do zabicia. Z powyższego przykładu byłoby to:

kill 2158

Pamiętaj, że czasami to nie działa i należy stosować bardziej agresywną formę kill. Oto seria eskalacji agresywności (na przykładzie PID 2158):

kill 2158
sudo kill 2158
sudo kill -INT 2158
sudo kill -KILL 2158

Powinieneś być w stanie wysunąć dysk po zabiciu procesu / aplikacji.

Ostatnia uwaga lsofmoże zająć minutę lub dwie. Może się również zawiesić, ale powinieneś dać mu to przynajmniej kilka minut, zanim zdecydujesz, że tak się stało.

Czasami polecenie podstawowe sudo lsof /Volumes/myDriveniczego nie znajdzie. Jeśli tak się stanie, spróbuj dodać +Dargument (tj sudo lsof +D /Volumes/myDrive.). Spowoduje to skanowanie dysku z góry na dół. To potrwa dłużej, ale powinno wychwycić wszystko, co powoduje, że dysk nie może zostać wyrzucony.

( Czapka dla posta Aleca Jacobsona dla dodatkowych szczegółów. )

Paul Gilfedder
źródło
1
Znalazłem to również, ale miałem nadzieję, że ktoś ma nieterminowe rozwiązanie. Jeśli nie, dostaniesz swój plus;)
CousinCocaine 10.10.2013
3
→ Paul: Sugeruję Ci poprawić swój sugerowany komendy jak:/usr/bin/sudo lsof /Volumes/myDrive
dan
3
O świetnie, zrobiłem lsof bez sudo, co daje zupełnie inny zestaw wyników.
Alper
2
Tak, sudo jest zdecydowanie potrzebne w wielu przypadkach. W moim przypadku okazało się, że było to spowodowane próbą zaindeksowania dysku przez Spotlight, więc rozwiązaniem było wyłączenie Spotlight dla dysku, a następnie ręczne zatrzymanie / ponowne uruchomienie Spotlight.
Tom
30

Próbowałeś $ diskutil unmount /Volumes/Diskname?

Czy $ diskutil unmount force /Volumes/Diskname?

Jak wskazuje strona podręcznika :

Z powodu złożonej i przeplatanej natury Mac OS X umount może często zawieść. Zalecane jest użycie diskutil (1) (jak w „diskutil unmount / mnt”).

Jeśli w nazwie woluminu są spacje, pamiętaj, aby uciec przed nimi \, np .:

$ diskutil unmount /Volumes/Disk\ Name

Lub użyj cytatów, aby uniknąć zamieszania.

$ diskutil unmount "/Volumes/Disk Name"
Jason Robinson
źródło
1
Myślę, że próbowałem tego i to nie zadziałało. Ale następnym razem spróbuję ponownie i odpowiednio zaktualizuję swój post.
CousinCocaine
Twój przykład zawiera cytaty, a nie apostrofy. Co jest dobre.
Nicolas Barbulesco
1
@NicolasBarbulesco: Dziękujemy za zwrócenie uwagi na to, że poprawiłem odpowiedź. Dobry chwyt!
Jason Robinson
1
Pracowałem -> sudo diskutil odmontuj siłę / Woluminy / Nazwa dysku
tgkprog
1
@tgkprog Cieszę się, że to słyszę, również dziękuję za sudopolecenie, które może również pomóc innym.
Jason Robinson
15

Twój problem jest prawdopodobnie spowodowany przez proces  mds : Spotlight indeksujący dysk.

Mam ten problem i nie znalazłem (jeszcze) rozwiązania.

Nicolas Barbulesco
źródło
Oto jak wyłączyć / ponownie włączyć indeksowanie reflektorów: iclarified.com/49187/…
rstackhouse
Zauważyłem również, że usługa MDS używa go. Próbowałem wyłączyć usługę mds dla napędu flash przy użyciu „sudo mdutil -i off / Volumes / 16GB”, ale to również nie pomogło. Musiałem ponownie uruchomić Findera za pomocą „Option + kliknięcie” na FInder.
Aruna,
6

Możesz wypróbować aplikację do darowizn „ What's Keeping me? ”, Która pokazuje, jaki proces / aplikacja korzysta z woluminu / folderu / pliku.

Ten program jest certyfikowany przez programistę dla systemu Mac OS X 10.6 Snow Leopard, ale strona RoaringApps dla tej aplikacji podaje, że działa dobrze w systemach OS X 10.7 Lion i OS X 10.8 Mountain Lion.

O tym, co mnie trzyma?

Czy kiedykolwiek miałeś problem polegający na tym, że nie możesz opróżnić Kosza ani wysunąć dysku, ponieważ coś Ci przeszkadza? Zwykle powodem jest to, że w niektórych aplikacjach jest otwarty plik, dlatego nie można pozbyć się dysku ani wyrzucić go do kosza. Właśnie dlatego stworzyliśmy What's Keeping Me! What's Keeping Me zidentyfikuje aplikację, która utrzymuje element otwarty. Następnie możesz użyć programu What's Keeping Me, aby zamknąć aplikację powodującą problemy (lub zabić ją w razie potrzeby), aby móc wykonać zadanie. What Keeping Me obejmuje przepływ pracy Automatora, dzięki czemu możesz wyszukiwać bezpośrednio z Findera!

MK
źródło
1
Wygląda to na prawidłowe oprogramowanie, ale naprawdę wolę natywne rozwiązania OS X.
CousinCocaine,
Przez język ojczysty rozumiesz coś, co zapewnia Apple? Nie ma nic takiego na froncie GUI. Ponadto WKM istnieje od kilku lat.
MK
Dziękuję za twój dodatek. Język natywny nie jest właściwym słowem, miałem na myśli „osoba trzecia”. WKM to fajne rozwiązanie, ale osobiście wolę lsof.
CousinCocaine
Właśnie przetestowałem aplikację w High Sierra i nadal działa. Jest także 64-bitowy.
dianeoforegon
4

Otrzymałem tę wiadomość, mimo że jestem pewien, że na woluminie nie ma otwartych plików . Sprawdziłem to za pomocą narzędzia GUI Why Not Unmount , które może wskazywać otwarte pliki na dysku.

W moim przypadku był to znak, że system plików jest uszkodzony. Uruchomienie Narzędzia dyskowego (lub jeśli to nie wystarczyło, DiskWarrior) rozwiązało problem i sprawiło, że dysk został ponownie wysunięty.

Hobbes
źródło
1
W moim przypadku system nie był uszkodzony.
CousinCocaine
Wydaje się mało prawdopodobne. Bardziej prawdopodobne jest, że Spotlight lub inna aplikacja lub usługa ma blokadę na dysku.
Tom
3

Zarówno rozwiązanie wiersza polecenia, jak i program Keep Keep Me działają świetnie.

Podsumowując, wiersz poleceń w terminalu to:

lsof | grep /Volumes/myDrive

Aplikacja GUI to What's Keeping Me, dostępna w Hamsoft Engineering .

Zrzuty ekranów obu z tego samego wyszukiwania.

Dane wyjściowe z wiersza poleceń GUI dla What's Keeping Me

Wolę nieco wiersz poleceń, ponieważ zawsze jest on z tobą. Z drugiej strony What's Keeping Me jest szybszy i łatwiejszy w użyciu, jeśli masz już zainstalowany.

Foliovision
źródło
3

UWAGA: fseventerdziała, dopóki OS X 10.10 Yosemite i strona programisty http://www.fernlightning.com nie przejdą w międzyczasie do trybu offline. Dlatego linki do produktów zostały usunięte. Dzięki brew cask install fseventertemu może być nadal dostępny w starszych wersjach systemu macOS.

Istnieje alternatywna aplikacja GUI do aplikacji CLI lsof:
fseventerjest doskonałym narzędziem do monitorowania dostępu do systemu plików do różnych celów . Działa z uprawnieniami superużytkownika ( sudo), więc widzi cały dostęp do odczytu / zapisu wszystkich zamontowanych systemów plików i przedstawia je w bardzo przejrzysty sposób.

Moje doświadczenie: miałem wolumin, który ciągle nie mógł zostać prawidłowo wysunięty (jak na zrzutach ekranowych PO) i zawsze potrzebowałem „wymuszonego wysunięcia”, czasem nawet silnego fizycznego rozłączenia (nie zalecane! Mogłoby to uszkodzić twój system plików) dysk) lub zamknięcie systemu w celu obejścia tej brutalnej metody.

Moja poprawka: Podsumowanie: problem z wyrzuceniem może być spowodowany uszkodzoną lub starszą zawartością pliku w tym woluminie. Usunięcie problematycznej zawartości może to naprawić na stałe. Szczegółowo:

  1. Określ dostęp do pliku (za pomocą lsoflub fseventer). W moim przypadku był to klasyczny plik Mac OS z rozwidleniem zasobów, który pozostawał otwarty, prawdopodobnie podczas zawieszania się na nim jakiegoś procesu analizowania dysku w tle (Spotlight, QuickLook itp.).

  2. Wykonaj kopię zapasową tych kłopotliwych danych w archiwum plików (które zachowuje dane zasobów (klasyczne) dla komputerów Mac). Po prostu użyłem natywnej funkcji kompresji Findera z menu kontekstowego.

  3. Usuń niesprawny plik / folder.

    • Z Finderem jak zwykle. Prawdopodobnie to się nie powiedzie, ponieważ jest to „niesprawny plik / folder”.
    • Z Finderem i przytrzymaniem ALT podczas opróżniania Kosza. To tworzy trochę więcej siły, ale prawdopodobnie nadal zawiedzie.
    • Przez terminal z sudo rm -R /path/to/troublesome/FileOrFolder. W końcu zadziałało to po nieudanych próbach usunięcia Findera.
  4. Spróbuj odmontować wolumin ponownie. Może nadal zawieść, ponieważ procesy w tle, które zakończyły się niepowodzeniem, mogą być nadal w stanie niemożliwym do odzyskania .

  5. Uruchom ponownie Następnie spróbuj odmontować ponownie. Od tego momentu Tom znów działał dobrze. Normalne operacje montowania, odmontowywania, odczytu / zapisu. Tylko wtedy, gdy plik był rzeczywiście otwarty przez proces użytkownika, odmontowanie zostało uniemożliwione. Znowu całkowicie normalne zachowanie.

porg
źródło
1

Rozwiązanie Upewnij się, że wszystkie programy są zamknięte. Kliknij ikonę Apple w lewym górnym rogu ekranu, a następnie kliknij przycisk Wymuś zamknięcie. Na liście kliknij Finder. Teraz kliknij przycisk Uruchom ponownie. Następnie spróbuj ponownie wysunąć dysk.

szaleniec
źródło
Czy widziałeś, że to rozwiązanie działa?
Nicolas Barbulesco
1

Spróbuj ponownie uruchomić Findera. Tutaj to działa

Alain
źródło
Nie jestem pewien, dlaczego zostało to odrzucone; W moim przypadku QuickLook i mds trzymali się tego (pomimo braku otwartych okien aktywnej wyszukiwarki). Mógłbym zrestartować mds, ale qlmanage -rpowiedziałem, że „resetuje szybkie przeglądanie”, ale nadal utrzymuje plik otwarty zgodnie z lsof +D /path/to/volume. Ponowne uruchomienie wyszukiwarki wyczyściło go i mogłem wysunąć wolumin.
AC Capehart
-2

Uruchomiłem ponownie komputer Mac i naprawiłem to :-)

Geniusz
źródło
1
Wolę czysty odmontowanie dysku. Ponieważ jestem w trakcie wykonywania wielu zadań, wylogowywanie się i logowanie nie jest preferowane, podobnie jak instalacja oprogramowania innych firm.
CousinCocaine