diskutil eject: как извлекать диски из Терминала на Mac
Извлеките любой диск на Mac из Терминала с помощью diskutil — включая принудительное размонтирование тома, который не извлекается, и поиск того, что его удерживает, через lsof.
Finder сообщает, что диск используется. Но он не говорит, что именно его использует и что с этим делать. Терминал делает и то, и другое.
Короткий ответ: выполните
diskutil eject /Volumes/YourDriveName, чтобы извлечь диск из Терминала. Если не получилось, используйтеsudo lsof /Volumes/YourDriveName, чтобы увидеть, что блокирует извлечение,kill <PID>, чтобы остановить мешающий процесс, и затем извлеките диск снова. В крайнем случаеdiskutil unmountDisk force /dev/diskNпринудительно отключит диск, но делайте это только тогда, когда ничего активно не записывается.
Если вы уверенно чувствуете себя в командной строке, Терминал — самый мощный способ справляться с упрямыми извлечениями дисков в macOS. А если пока не очень уверенно, эти команды — хорошая отправная точка.
Базовое извлечение через diskutil eject
Самый прямой способ извлечь внешний диск из Терминала на Mac:
diskutil eject /Volumes/YourDriveName
Замените YourDriveName на реальное имя вашего диска — точно так, как оно отображается в Finder. Если в имени есть пробелы, заключите его в кавычки:
diskutil eject "/Volumes/My Drive"
Это делает то же самое, что и нажатие кнопки извлечения в Finder. Если всё прошло успешно, диск размонтируется чисто, и на этом всё. Если же произошёл сбой, вы получите гораздо более информативное сообщение об ошибке, чем когда-либо даёт Finder.
Можно также размонтировать без извлечения (диск останется видимым в Дисковой утилите, но не будет смонтирован):
diskutil unmount /Volumes/YourDriveName
Разница важна для дисков с несколькими разделами. unmount убирает один том. eject убирает физическое устройство и все его тома сразу.
Поиск идентификатора диска через diskutil list
Прежде чем использовать более продвинутые команды, вам нужен идентификатор диска. Выведите список всех подключённых дисков:
diskutil list
В выводе показан каждый диск и его разделы. Ваш внешний диск будет чем-то вроде disk4 или disk5. Внутренние диски обычно disk0 и disk1.
Чтобы получить более удобный обзор только внешних дисков:
diskutil list external
Узнав идентификатор диска, вы также можете извлечь его, используя путь /dev/ вместо имени тома:
diskutil eject /dev/disk4
Это удобно, когда в имени тома есть необычные символы или когда том не смонтирован, но диск всё ещё подключён.
Как извлечь все внешние диски сразу
Если вам нужно извлечь каждый внешний диск одной командой, есть два подхода.
Использование diskutil для поиска и извлечения всех внешних дисков:
diskutil list external | grep -o 'disk[0-9]*$' | while read disk; do diskutil eject "/dev/$disk"; done
Или с помощью AppleScript из Терминала, что повторяет то, что делает Finder:
osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
Подход с AppleScript извлекает только те диски, которые Finder считает извлекаемыми — он пропускает загрузочный диск и сетевые тома, что обычно как раз то, что нужно.
Принудительное размонтирование, когда diskutil eject не срабатывает
Если обычное извлечение завершается ошибкой вроде «couldn’t unmount disk», выполните его принудительно:
diskutil unmount force /Volumes/YourDriveName
Или размонтируйте все тома на конкретном диске сразу:
diskutil unmountDisk force /dev/disk4
Принудительное размонтирование указывает macOS освободить том независимо от того, что его использует. Это более контролируемо, чем физическое отключение диска — система всё ещё сбрасывает кэши и уведомляет процессы — но она не ждёт, пока процессы корректно закроют файлы.
Используйте принудительное размонтирование, когда вы знаете, что ничего важного не записывается. Это эквивалент в командной строке принудительного извлечения из Дисковой утилиты. Прочитайте наше руководство о том, когда принудительное извлечение безопасно, а когда рискованно, прежде чем применять это к диску, который активно использовался.
Поиск того, что блокирует извлечение, с помощью lsof
Это команда, которая делает Терминал незаменимым при проблемах с извлечением:
lsof /Volumes/YourDriveName
lsof расшифровывается как «list open files» (список открытых файлов). Она показывает каждый процесс, у которого открыт файл на этом томе — имя процесса, идентификатор процесса (PID), пользователя, который его запустил, и какой файл открыт. (За подробным разбором флагов и приёмов lsof обратитесь к нашему руководству по команде lsof для пользователей Mac.)
Для полных результатов (включая системные процессы) запустите её с sudo:
sudo lsof /Volumes/YourDriveName
Без sudo вы видите только процессы, принадлежащие вашей учётной записи. Системные процессы вроде mds от Spotlight или backupd от Time Machine не появятся. С sudo вы видите всё, что действительно удерживает диск открытым.
Чтение вывода lsof
Вывод выглядит примерно так:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mds 123 root 12r REG 1,8 4096 789 /Volumes/MyDrive/.Spotlight-V100/...
Finder 456 aaron 15r DIR 1,8 1024 2 /Volumes/MyDrive
Dropbox 789 aaron 8u REG 1,8 8192 345 /Volumes/MyDrive/Projects/.dropbox
Столбцы, которые важнее всего:
- COMMAND: имя процесса — это говорит вам, что блокирует извлечение.
- PID: идентификатор процесса — вы используете его, чтобы завершить процесс при необходимости.
- FD: FD описывает режим открытия файла: r для чтения, w для записи, u для обоих. Это не текущая активность и не доказательство отсутствия ожидающих записей на томе.
- NAME: конкретный файл, к которому идёт обращение — это часто точно раскрывает, почему процесс там.
Частые виновники: mds (индексирование Spotlight), backupd (Time Machine), Dropbox, Google Drive, сам Finder. Смотрите наши подробные разборы про Spotlight, блокирующий извлечение и iCloud/Dropbox, мешающие извлечению, за целенаправленными решениями.
Завершение блокирующих процессов
Завершайте поддерживаемые приложения из строки меню. Системные процессы обрабатываются отдельно и могут требовать ожидания или выключения Mac. Сохраните работу, завершите копирование и резервное копирование и закройте приложения обычным способом перед повторным извлечением. Принудительное завершение или извлечение может привести к потере данных; Ejecta не подтверждает безопасность записи.
kill 789
Это отправляет сигнал корректного завершения. Процесс получает возможность закрыть файлы и навести порядок. Дайте ему несколько секунд на выход, затем попробуйте извлечь диск снова.
Если он не отвечает на корректное завершение:
kill -9 789
Принудительное завершение является крайней мерой. Оно может привести к потере несохранённой работы или прервать запись. Сначала сохраните работу и дождитесь окончания передачи. Имена процессов Spotlight не доказывают доступ только для чтения. Не завершайте mds или mds_stores принудительно ради освобождения диска. Подождите, закройте приложения и повторите обычное извлечение. Ejecta определяет эти процессы, но не предлагает обычное завершение системных процессов. Если диск остаётся заблокированным, сохраните всё и полностью выключите Mac перед отключением диска.
Сохраните работу, завершите копирование и резервное копирование и закройте приложения обычным способом перед повторным извлечением.
Полный порядок устранения неполадок
Сохраните работу, завершите копирование и резервное копирование и закройте приложения обычным способом перед повторным извлечением.
diskutil eject "/Volumes/YourDriveName"
sudo lsof "/Volumes/YourDriveName"
Имена процессов Spotlight не доказывают доступ только для чтения. Не завершайте mds или mds_stores принудительно ради освобождения диска. Подождите, закройте приложения и повторите обычное извлечение. Ejecta определяет эти процессы, но не предлагает обычное завершение системных процессов. Если диск остаётся заблокированным, сохраните всё и полностью выключите Mac перед отключением диска.
Имя процесса или список открытых файлов не доказывает отсутствие записи. Сохраните работу, завершите копирование и резервное копирование и закройте приложения обычным способом перед повторным извлечением. Принудительное завершение или извлечение может привести к потере данных; Ejecta не подтверждает безопасность записи.
Полезные диагностические варианты
Проверьте, удерживает ли ваш диск именно Spotlight:
lsof /Volumes/YourDriveName | grep mds
Выведите только уникальные имена процессов, блокирующих извлечение (без повторяющихся строк):
lsof /Volumes/YourDriveName | awk '{print $1}' | sort -u
Наблюдайте за дисковым вводом-выводом в реальном времени, чтобы понять, идёт ли активная запись:
sudo fs_usage -f diskio | grep YourDriveName
Эта команда работает непрерывно и показывает каждую дисковую операцию по мере её выполнения. Нажмите Control-C, чтобы остановить. Используйте её, когда lsof показывает процесс, но вы не уверены, активно ли он пишет или просто удерживает устаревший дескриптор.
Когда Терминал требует больше усилий, чем оно того стоит
Эти команды мощные, и после нескольких использований они становятся второй натурой. Но есть реальная цена переключения от работы к окну Терминала — запуск диагностических команд, разбор технического вывода, решение, какой PID безопасно завершить.
Ejecta: Ejecta предлагает бесплатную диагностику дисков без ограничения пробного периода. Платная лицензия открывает завершение и извлечение для поддерживаемых приложений, извлечение всех дисков и управление Time Machine. Системные процессы могут требовать ожидания, авторизации или выключения. Сначала сохраните работу и завершите передачу.
Без ограничений на число компьютеров или активаций. Запрос возврата в течение 30 дней.
Ejecta предлагает бесплатную диагностику дисков без ограничения пробного периода. Платная лицензия открывает завершение и извлечение для поддерживаемых приложений, извлечение всех дисков и управление Time Machine. Системные процессы могут требовать ожидания, авторизации или выключения. Сначала сохраните работу и завершите передачу.
Купить -Похожие статьи
Как безопасно извлечь USB-накопитель на Mac
Все способы извлечь USB-накопитель на Mac, а также что делать, когда macOS пишет, что диск используется, и не …
Как найти, открыть и использовать внешний жёсткий диск на Mac
Подключите внешний жёсткий диск к Mac, найдите его в Finder, откройте файлы и безопасно отключите. Понятная …
Почему Mac тормозит, когда подключён внешний диск
Подключение внешнего диска не должно замедлять всю систему, но часто замедляет. Вот что происходит за кулисами …
Как помешать iCloud и Dropbox блокировать извлечение диска
Службы облачной синхронизации печально известны тем, что мешают извлекать внешние диски на Mac. Вот почему они …