Как извлечь внешний диск, если мой Mac отказывается из-за прожектора?

40

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

Я не запустил ни одного приложения и не открыл ни одного файла с диска.

Я скачал и установил приложение «  Что меня держит»? Это приложение довольно приятно. Она говорит мне, что процесс  mdsиспользует мой диск.

Я убил процесс  mdsи несколько процессов  mdworker. Это для Spotlight. Но такие процессы порождаются снова.

Как я могу извлечь мой диск из моего Mac?

У меня Mac OS X 10.6.8.

Николас Барбулеско
источник
Стоит ли просто ждать окончания процессов? Я нашел это работает на практике для меня.
Чогг

Ответы:

27

Просто отключите индексацию диска и сотрите содержимое журнала на томе. Для этого откройте терминал и введите следующую команду:

sudo mdutil -Ei off "/Volumes/Name_of_Drive"

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

В качестве альтернативы, по предложению Саймона Уайта, просто выключите машину и затем отключите диск. Однако предостережение заключается в том, что накопитель начнет индексирование при повторном подключении.

njboot
источник
4
достаточно просто остановить процесс. sudo mdutil -i off "/Volumes/Name_of_Drive"( -Eстирает и перестраивает индекс). Он должен начать сканирование снова при следующем подключении диска. чтобы отключить постоянное сканирование этого диска, используйте -d( sudo mdutil -d "/Volumes/Name_of_Drive"). Посмотрите все эти аргументы и многое другое, введя mdutilв командной строке.
Даннид
2
Понравился совет, но, пожалуйста, не предлагайте выход после команды ... Я не заметил и потерял историю вывода, который у меня был там.
Равемир
@njboot - Нет. Команда "history" просто дает мне историю введенных команд, но не возвращает их результат.
Николас Барбулеско
1
После ввода команды mdutil я все равно не смог извлечь диск. Поэтому я также выпустил «sudo killall mds», и это заставило его работать.
Томас Темпельманн
21

Вы можете попробовать размонтировать его из командной строки:

diskutil unmount /Volumes/MountPoint

или с силой:

diskutil unmount force /Volumes/MountPoint

Если это все еще терпит неудачу, проверьте, что использует Ваш диск:

sudo fs_usage -w -f filesys | grep Volumes

Или используя lsof:

sudo lsof | grep Volumes

(Некоторые процессы запускаются только когда lsof запускается от имени администратора.)


Чтобы отключить временный прожектор, запустите:

sudo mdutil -a -i off

Затем sudo mdutil -a -i onснова включить.


Другие приложения, которые могут быть полезны: Whats Keeping Me .

kenorb
источник
2
Я только что узнал, что Spotlight (mds, mds_store, mdworker) не будет отображаться в списке при запуске lsofот имени пользователя. Тем не менее, sudo lsof | grep Volumesработает отлично. («Whats Keeping Me» имеет флажок «Как администратор», соответственно.)
hans_meine
5

Часто я нахожу, что mds мешает мне отключить том.

sudo killall mds

А затем (быстро) попробуйте снова извлечь громкость.

В моем случае я монтирую основной том другого Mac на моем текущем Mac. Я не хочу отключать Spotlight, так как хочу, чтобы индексирование возобновлялось, когда внешний том возвращался на другой Mac (в качестве загрузочного тома).

Colin
источник
Интересный. Может быть, «быстро» является ключевым!
Николас Барбулеско
Благодарность! Это единственный ответ, который работал для меня, кроме принудительного изгнания, что я бы не хотел делать.
Эддисон
2

Чтобы приложение Spotlight не индексировало диск, создайте текстовый файл в TextEdit без содержимого, просто укажите заголовок .metadata_never_index и сохраните его на внешнем устройстве. Снимите флажок с использованием расширения "txt" ... и скажите TextEdit, что да, вы хотите сохранить его с точкой впереди (что сделает его невидимым).

Я не уверен, остановит ли это это прямо сейчас, но предотвратит ли это в будущем.

В качестве альтернативы, превратите этот Applescript в приложение, чтобы принудительно извлечь [с обычными предостережениями при принудительном извлечении ...] ... кредит в блоге MacTipper

    property show_credits : true

set the_volumes to do shell script "ls /Volumes/"
tell application "Finder" to set the_HD to path to home folder as string

set ejectable_volumes to {}
repeat with i in (every paragraph of the_volumes)
    if the_HD does not start with i then
        set end of ejectable_volumes to (i as string)
    end if
end repeat
if (count of items of ejectable_volumes) is 0 then
    tell me to activate
    display dialog "Sorry, but there are no ejectable volumes."
else if (count of items of ejectable_volumes) is 1 then
    tell me to activate
    set the_result to item 1 of ejectable_volumes as string
    display dialog ("Eject \"" & the_result & "\"?") buttons {"No", "Yes"} default button 2 cancel button "No"
    set the_path to quoted form of ("/Volumes/" & the_result as string)
    do shell script "hdiutil eject -force " & the_path
else
    tell me to activate
    set the_result to choose from list ejectable_volumes with prompt "Please choose a volume to eject (You can select multiple items):" with multiple selections allowed
    if the_result is not false then
        repeat with j in the_result
            set the_path to quoted form of ("/Volumes/" & j as string)
            do shell script "hdiutil eject -force " & the_path
        end repeat
    end if
end if

if show_credits is true then
    tell me to activate
    set the_credits to button returned of (display dialog "This applescript brought to you by The MacTipper Blog.\n\nhttp://mactipper.com" buttons {"Don't Show Again", "Visit TMB", "OK"} default button 3) as string
    if the_credits is "Don't Show Again" then
        set show_credits to false
    else if the_credits is "Visit TMB" then
        open location "http://mactipper.com"
    end if
end if
Tetsujin
источник
Спасибо. Но ... «заставить вытолкнуть [с обычными оговорками при принудительном изгнании ...]» Это беспокоит. Если бы я согласился рискнуть повредить диск, я бы просто отключил его.
Николас Барбулеско
Затем установите флажок no spotlight и подождите, пока он не появится, и прекратите индексирование.
Тецудзин
Или вы можете запустить sudo diskutil unmountDisk force /Volumes/Name_of_Volumeиз терминала, чтобы принудительно сделать это. Этот сценарий не является необходимым.
njboot
@NicolasBarbulesco Это не одно и то же. Принудительное отключение тома - это не то же самое, что вытягивание вилки. В последнем случае вы внезапно отключаете питание устройства, что, как можно себе представить, может привести к повреждению магнитного диска, вращающегося со скоростью несколько К об / мин. В первом случае вы просто заставляете устройство размонтировать громкость. Затем диск вращается должным образом, и вы вытягиваете вилку, как обычно. Это намного безопаснее.
njboot
@njboot - я не пробовал вашу diskutilкоманду. Но я попробовал аналог с Disk Utility - безрезультатно.
Николас Барбулеско
2

Вы можете попытаться принудительно выйти из Finder, это сработало для меня. Finder зависал на USB-накопителе, поэтому принудительное завершение работы и повторный запуск освободили независимо от зависания.

user128242
источник
как можно это сделать? принудительно выйти искатель?
Рускес
Опция + Command + ESC!
sdive
Но может ли это сработать в случае Spotlight с моим вопросом?
Николас Барбулеско
1

Если по какой-либо причине вы не можете отключить диск, вы можете просто выключить компьютер. Когда компьютер выключен, вы можете безопасно отключить диск. Затем запустите компьютер. Это не только позволит вам безопасно отключить диск, но и обеспечит перезапуск процесса mds в случае его зависания.

Если вы решили, что не хотите использовать Spotlight с этим диском, все, что вам нужно сделать, чтобы остановить его индексацию, - это добавить диск на вкладку «Конфиденциальность» панели Spotlight в Системных настройках. Прожектор будет игнорировать диск.

В качестве альтернативы, если вы хотите использовать Spotlight на этом диске, то создание индекса при первом обнаружении компьютером диска является неизбежным злом. После создания индекса он обновляется при каждом изменении каждого файла, поэтому он не заставит вас ждать снова. Но если вы не видите индикатор выполнения в меню Spotlight, то, скорее всего, mds зависает. Опять же, просто выключите компьютер в этом случае и отключите диск.

Саймон Уайт
источник
1
Конечно, я могу выключить Mac. Но это не вариант.
Николас Барбулеско
Мне нравится идея, чтобы Spotlight знал мой диск. Но я пытался заставить Spotlight игнорировать мой диск на данный момент. Используя Системные настройки → Прожектор. Это не сработало: «Невозможно из-за неизвестной ошибки». Отличное сообщение об ошибке! Apple, должно быть, наняла перебежчика из Micro $ oft! Я также пытался позволить времени действовать. Я пошел на работу и позволил Spotlight индексировать диск в течение всего дня. Вечером я вернулся, и проблема осталась прежней.
Николас Барбулеско
Я на самом деле думаю, что проблема в том, что mdsлибо система не сообщает системе, что она завершила работу с диском, либо не завершает работу после того, как все сделано, и таким образом удерживает диск до тех пор, пока процесс не будет каким-либо образом завершен (например, завершение работы). Если я вижу, что mdsпроцессор не используется, когда утверждают, что использует диск, я принудительно извлекаю диск.
bauerMusic
@bauerMusic - Как вы «принудительно извлекаете диск»?
Николас Барбулеско
@NicolasBarbulesco «Силовой привод» - это опция, которую система предлагает через некоторое время. Если вы попытаетесь извлечь, должно появиться сообщение «Попытка извлечения диска» (или аналогичное) и через минуту или около того (в случае неудачи) отобразится другое всплывающее окно, в котором есть возможность принудительного извлечения диска.
bauerMusic
1

Другой простой вариант - извлечь его через Дисковые утилиты.

Тим Ундхейм
источник
Вы читали комментарии в ответе Тецуджина? Дисковая утилита не предлагает опцию «форсировать»
klanomath
Просто попробуйте. Простое извлечение через Дисковые утилиты всегда работает для меня, когда внешний диск любого типа не извлекается, потому что он «используется».
Тим Ундхейм
Я попытался извлечь диск с помощью Дисковой утилиты. Но это не сработало.
Николас Барбулеско
1
Жаль слышать об этом. Дисковая утилита просто удаляет несмонтированные «используемые» диски на моем устройстве, которое работает на 10.7.5. Вы можете посмотреть в DiskWarrior.
Тим Ундхайм,
1
По какой-то причине с помощью дисковой утилиты команда unmount работала у меня на проблемном диске.
MiB
0

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

В Системных настройках 10.11 есть запись для «Spotlight», которая имеет вкладку «Конфиденциальность». Нажмите «+», выберите диск, и все готово. Просто закройте «Системные настройки», подождите несколько секунд, чтобы система заметила обновление, и вы сможете извлечь его. Теперь он не начнет индексирование диска при следующем подключении, поэтому у вас больше не будет проблем в будущем.

Дэвид К. Сторрс
источник
Я попробовал это. Это не сработало. Смотрите мой комментарий здесь: apple.stackexchange.com/questions/142459/…
Николас Барбулеско