Объем не может быть извлечен, потому что он в настоящее время используется


100

После работы с внешним резервным USB-диском я хочу аккуратно размонтировать диск. При нажатии на кнопку «извлечь» Finder предупреждает меня сообщением:

  • « Том не может быть извлечен, потому что он в настоящее время используется ».

или же

  • Msgstr "Диск " Имя диска "не был извлечён, потому что одна или несколько программ могут использовать его. "

или при попытке использовать Терминал: umount /Volumes/Diskname

  • " umount (/ Volumes / Diskname): ресурс занят - попробуйте 'diskutil unmount' "

Насколько я знаю, я не использую этот диск, но Finder говорит, что я использую, поэтому я должен ошибаться. Я предпочитаю чистое размонтирование диска. Поскольку я нахожусь в процессе выполнения нескольких задач, выход из системы и вход в нее не являются предпочтительными, как установка стороннего программного обеспечения.

Здесь lsofможет быть полезна команда терминала , но лично я думаю, что она слишком сложна для такой «простой» проблемы, и, честно говоря, я не знаю, как правильно ее использовать.

Мой вопрос: как узнать, какая программа использует мой диск, чтобы я мог правильно выйти из этой программы и извлечь ее?

Объем не может быть извлечен, потому что он в настоящее время используется. Диск "Camel" не был извлечен, потому что одна или несколько программ могут использовать его. Диск "Mammtoh" не был извлечен, потому что одна или несколько программ ... XKCD


2
«Насколько мне известно, я не использую этот диск, но Finder говорит, что я использую, поэтому я должен ошибаться». Вы слишком доверяете машинам. ;-) Часто компьютеры не правы, а мы, люди, правы.
Николас Барбулеско

Так что вы говорите, что я прав? ;)
Кузен Кокаин


2
И если Spotlight является виновником, сохраните себе некоторое повторение: apple.stackexchange.com/a/211616/15417
John2095

Ответы:


130

lsofэто действительно ваша лучшая ставка. Самый быстрый и простой способ будет следующим:

sudo lsof /Volumes/myDrive

Запуск может занять пару минут, но после его завершения вы получите список открытых файлов на диске. Вывод будет выглядеть примерно так:

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  

В данном случае это QuickLookприложение, в котором открыт файл. Непосредственное закрытие приложения - лучший способ решить проблему. Однако это не всегда возможно. Например, QuickLook не отображается как приложение, к которому вы можете получить доступ в Dock.

Если вы не можете закрыть приложение вручную, вы можете использовать killкоманду, чтобы завершить его из командной строки. Чтобы сделать это, используйте PIDиз второго столбца в качестве идентификатора для уничтожения. Из приведенного выше примера это будет:

kill 2158

Обратите внимание, что иногда это не работает, и необходимо использовать более агрессивную форму kill. Вот серия нарастающей агрессивности (на примере PID 2158):

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

Вы должны быть в состоянии извлечь диск после того, как процесс / приложение было убито.

Последнее замечание lsofможет занять минуту или две. Он также может зависать, но вы должны дать ему хотя бы несколько минут, прежде чем решите, что это случилось.

Кроме того, иногда базовая команда sudo lsof /Volumes/myDriveничего не находит. Если это произойдет, попробуйте добавить +Dаргумент (т.е. sudo lsof +D /Volumes/myDrive). Это сделает сканирование диска сверху вниз. Это займет больше времени, но должно поднять все, что приводит к невозможности извлечения диска.

( Шляпная подсказка к сообщению Алека Джейкобсона для дополнительной информации. )


1
Я также нашел это, но я надеялся, что у кого-то есть нетерминальное решение. Если нет, вы получите свой плюс один;)
CousinCocaine


3
→ Пол: Я бы посоветовал вам улучшить предложенную команду как:/usr/bin/sudo lsof /Volumes/myDrive
Дэн

3
О, отлично, я сделал lsof без sudo, что дает совершенно другой набор результатов.
Альпер

2
Да, sudo определенно необходим во многих случаях. В моем случае это показало, что это произошло из-за того, что Spotlight попытался проиндексировать диск, поэтому решение было отключить Spotlight для диска, а затем вручную остановить / перезапустить Spotlight.
Том

30

Ты пробовал $ diskutil unmount /Volumes/Diskname?

Или $ diskutil unmount force /Volumes/Diskname?

Как указывается в справочной странице :

Из-за сложного и переплетенного характера Mac OS X размонтирование может часто происходить с ошибками. Вместо этого рекомендуется использовать diskutil (1) (как в «diskutil unmount / mnt»).

Если в томе есть пробелы в названии, обязательно избегайте пробелов с помощью \, например:

$ diskutil unmount /Volumes/Disk\ Name

Или используйте кавычки, чтобы избежать путаницы.

$ diskutil unmount "/Volumes/Disk Name"

1
Я думаю, что я попробовал это, и это не сработало. Но в следующий раз я попробую еще раз и обновлю свой пост соответственно.
Кузен Кокаин

В вашем примере есть кавычки, а не апострофы. Что хорошо.
Николас Барбулеско

1
@NicolasBarbulesco: Спасибо за указание на это, я внес исправления в ответ. Хороший улов!
Джейсон Робинсон

1
Работает -> sudo diskutil unmount force / Тома / Имя диска
tgkprog

1
@tgkprog Рад это слышать, также спасибо за sudoкоманду, которая также может помочь другим.
Джейсон Робинсон

15

Возможно, ваша проблема вызвана процессом  mds : Spotlight индексирует ваш диск.

У меня есть эта проблема, и я не нашел решение (пока).


Вот как отключить / снова включить индексирование в центре внимания: iclarified.com/49187/…
rstackhouse

Я также обнаружил, что mds сервис использует его. Я попытался отключить службу mds для флэш-накопителя с помощью «sudo mdutil -i off / Volumes / 16GB», но это также не помогло. Мне пришлось перезапустить Finder, используя «Option + Click» на FInder.
Аруна

6

Вы можете попробовать приложение donationware « Что меня хранит? », Которое показывает, какой процесс / приложение использует том / папку / файл.

Эта программа сертифицирована разработчиком для Mac OS X 10.6 Snow Leopard, но на странице RoaringApps для этого приложения указано, что она отлично работает на OS X 10.7 Lion и OS X 10.8 Mountain Lion.

О том, что меня держит?

У вас когда-нибудь возникала проблема, когда вы не можете очистить корзину или извлечь диск, потому что вам что-то мешает? Обычно причина в том, что в каком-то приложении открыт файл, и поэтому вы не можете избавиться от диска или удалить файл. Вот почему мы сделали «Что меня держит»! То, что держит меня, идентифицирует приложение, которое удерживает элемент открытым. Затем вы можете использовать функцию «Что держит меня», чтобы выйти из проблемного приложения (или убить его при необходимости), чтобы выполнить свою задачу. Что держит меня включает в себя рабочий процесс Automator, так что вы можете выполнять поиск прямо из Finder!


1
Это похоже на действующее программное обеспечение, но я действительно предпочитаю собственные решения OS X.
Кузен Кокаин

Под родным вы имеете в виду что-то, что Apple предоставляет? На фронте GUI ничего подобного нет. Кроме того, WKM существует уже несколько лет.
MK

Спасибо за ваше добавление. «Нативный» - это не то слово, которое я имел в виду под «не третьей стороной». WKM - хорошее решение, но лично я предпочитаю lsof.
Кузен Кокаин

Только что протестировал приложение в High Sierra, и оно все еще работает. Это также 64-битный.
dianeoforegon

4

Я получил это сообщение, хотя был уверен, что на томе нет открытых файлов . Я проверил это с помощью Why Not Unmount , инструмента с графическим интерфейсом, который может указывать открытые файлы на диске.

В моем случае это был признак того, что файловая система повреждена. Запуск Disk Utility (или, если этого недостаточно, DiskWarrior) решил проблему и снова сделал диск извлекаемым.


1
В моем случае система не была повреждена.
Кузен Кокаин

Кажется маловероятным Скорее всего, Spotlight или другое приложение или служба заблокированы на диске.
Том

3

И решение для командной строки, и What Keeping Me прекрасно работают.

Напомним, что командная строка в терминале:

lsof | grep /Volumes/myDrive

Приложение с графическим интерфейсом «Что меня держит» доступно в Hamsoft Engineering .

Скриншоты обоих с одинаковым поиском происходит.

Вывод командной строки GUI для того, что меня держит

Я предпочитаю командную строку немного, так как она всегда с тобой. С другой стороны, What Keeping Me быстрее и проще в использовании, если он у вас установлен.


3

ПРИМЕЧАНИЕ: fseventerработает до OS X 10.10. Yosemite и страница разработчика http://www.fernlightning.com тем временем вышли в офлайн. Следовательно, ссылки на товары были удалены. С brew cask install fseventerним все еще может быть доступна на старых версиях MacOS.

Существует альтернатива графическому интерфейсу для приложения CLI lsof:
fseventerэто отличная утилита для мониторинга доступа к файловой системе для различных целей . Он работает с привилегиями суперпользователя ( sudo), поэтому он видит все права на чтение / запись всех смонтированных файловых систем и представляет их в очень четком обзоре.

Мой опыт: у меня был том, который постоянно не мог быть извлечен должным образом (как на скриншотах OP), и мне всегда требовалось «принудительное извлечение», иногда даже принудительное физическое отключение (или не рекомендованное!) Может повредить вашу файловую систему (системы) на этом диск) или выключение системы, чтобы обойти этот грубый метод.

Мое исправление: Обобщено: проблема извлечения может быть вызвана поврежденным или устаревшим содержимым файла на томе. Удаление проблемного контента может исправить это навсегда. В деталях:

  1. Определите, к какому файлу осуществляется доступ (с помощью lsofили fseventer). В моем случае это был файл Classic Mac OS с разветвлением ресурса, который оставался открытым, вероятно, на нем висел какой-то фоновый процесс разбора диска (Spotlight, QuickLook или тому подобное).

  2. Резервное копирование этих тревожных данных в файловый архив (который сохраняет (классические) данные, специфичные для Mac). Я просто использовал встроенную функцию Finder "Compress" из его контекстного меню.

  3. Удалите проблемный файл / папку.

    • С Finder как обычно. Вероятно, это не удастся, так как это «проблемный файл / папка».
    • С Finder плюс удерживая ALT во время очистки корзины. Это создает немного больше силы, но, вероятно, все равно потерпит неудачу.
    • Через Терминал с sudo rm -R /path/to/troublesome/FileOrFolder. Это в конечном итоге сработало после неудачных попыток Finder.
  4. Попробуйте отключить том снова. Он все еще может потерпеть неудачу, так как фоновые процессы, которые потерпели неудачу, могут все еще быть в неисправимом состоянии .

  5. Запустить снова. Затем попробуйте размонтировать снова. С тех пор Том снова работал нормально. Обычный монтаж, размонтирование, операции чтения / записи. Только когда файл действительно был открыт пользовательским процессом, размонтирование было предотвращено. Совершенно нормальное поведение снова.


1

Решение Убедитесь, что все программы закрыты. Нажмите значок Apple в левом верхнем углу экрана, затем нажмите «Принудительно выйти». В списке нажмите Finder. Теперь нажмите кнопку «Перезапустить». Затем попробуйте извлечь диск еще раз.


Вы видели, как работает это решение?
Николас Барбулеско

1

Попробуйте перезапустить Finder. Вот это работает


Не уверен, почему это было понижено; В моем случае QuickLook и mds оба держали его (несмотря на то, что не открывались активные окна поиска). Я мог перезапустить mds, но qlmanage -rсказал, что это «сброс quicklookd», но файл все равно остается открытым lsof +D /path/to/volume. Повторный запуск искателя прояснил это, и я был в состоянии извлечь объем.
AC Capehart

-2

Я перезапустил свой Mac, и это исправило :-)


1
Я предпочитаю чистое размонтирование диска. Поскольку я нахожусь в процессе выполнения нескольких задач, выход из системы и вход в нее не являются предпочтительными, как установка стороннего программного обеспечения.
Кузен Кокаин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.