Как узнать, какой процесс использует диск на Mac

Mac не извлекает диск? Вот как точно определить, какой процесс его блокирует — с помощью Мониторинга системы, Терминала и более быстрого способа в один щелчок.

Когда macOS отказывается извлекать внешний диск, она сообщает, что что-то его использует — и на этом останавливается. Ни имени, ни указателя, ни подсказки. Найти виновника самостоятельно — дело нескольких шагов, но вполне выполнимое. Это руководство проведёт вас по всем способам: от встроенных инструментов Apple до команд Терминала, которые раскрывают то, что скрывает графический интерфейс.

Почему macOS просто не скажет вам

Это настоящее раздражение, а не ошибка пользователя. macOS всегда показывала ошибку «диск используется», не называя процесс-нарушитель. Операционная система знает, какой процесс держит открытый дескриптор файла на томе, — она просто не выводит эту информацию в Finder или в диалоге извлечения.

Результат: вы закрываете все видимые приложения, ничего не меняется, а диск по-прежнему не извлекается. Как описано в руководстве по устранению ошибки macOS «Диск используется», блокировщиком часто оказывается фоновый процесс — индексирование Spotlight, генерация эскизов Быстрым просмотром или демон облачной синхронизации, — а не то, что вам пришло бы в голову завершить вручную.

Способ 1: Мониторинг системы (ограничен, но точка отсчёта)

Мониторинг системы — первое, куда большинство людей заглядывают. Для этой конкретной задачи он не идеален, но может помочь сузить круг.

  1. Откройте Мониторинг системы (Программы → Утилиты → Мониторинг системы или через поиск Spotlight).
  2. Нажмите вкладку Диск вверху.
  3. Отсортируйте по столбцу Прочитано байт или Записано байт, чтобы увидеть, какие процессы активно читают или пишут.

Проблема: Мониторинг системы показывает дисковую активность по всем томам, а не только по вашему внешнему диску. Процесс в верхней части списка может писать на внутренний SSD, а не на USB-диск. Фильтровать по тому здесь нельзя.

И всё же, если вы заметите что-то неожиданное — демон резервного копирования, медиаприложение, службу синхронизации, — его стоит завершить и снова попробовать извлечь диск.

Способ 2: Терминал с lsof (надёжный подход)

lsof расшифровывается как «list open files» (список открытых файлов), и в macOS каждый подключённый том — это путь в файловой системе. Эта команда покажет вам каждый процесс с открытым дескриптором на конкретном диске.

Найдите точку монтирования диска

Сначала уточните точное имя диска, как его видит macOS:

ls /Volumes/

Эта команда выводит список всех подключённых томов. Ваш внешний диск появится здесь — запомните точное имя, включая регистр букв и пробелы.

Запустите lsof для тома

lsof /Volumes/YourDriveName

Замените YourDriveName на реальное имя тома. В выводе перечислен каждый процесс с открытым файлом на этом томе, включая:

  • COMMAND — имя процесса
  • PID — идентификатор процесса
  • USER — учётная запись пользователя, под которой он запущен
  • NAME — конкретный путь к файлу, к которому идёт обращение

Что вы обычно увидите

Частые виновники, появляющиеся в выводе lsof:

  • mds или mds_stores — индексирование Spotlight
  • QuickLookUIService — генерация эскизов Быстрым просмотром
  • cloudd, bird или com.apple.iCloudDrive — синхронизация iCloud
  • backupd — Time Machine
  • Finder — открытые окна Finder, указывающие на диск
  • Медиаприложения вроде Final Cut Pro или Premiere, у которых открыты файлы проектов

Совет: если lsof ничего не возвращает, попробуйте запустить его с sudo для получения повышенных прав: sudo lsof /Volumes/YourDriveName. Некоторые системные процессы видны только с правами root.

Чтобы глубже разобраться в возможностях lsof — включая фильтрацию по PID и завершение процессов прямо из командной строки — см. Команда lsof для пользователей Mac.

Завершите процесс из Терминала

Получив PID, вы можете завершить процесс:

kill -15 <PID>

Если он не реагирует, переходите к принудительному завершению:

kill -9 <PID>

Затем снова попробуйте извлечь диск.

Способ 3: fuser как альтернатива

fuser — ещё одна команда Терминала, которая сообщает, какие процессы используют файл или файловую систему. Она менее многословна, чем lsof, но её вывод читается быстрее:

sudo fuser /Volumes/YourDriveName

В выводе — просто список PID. Чтобы рядом с ними получить имена процессов, объедините команду с ps:

sudo fuser /Volumes/YourDriveName | xargs ps -p

Это удобно, когда нужен быстрый ответ без разбора длинной таблицы lsof.

Частые блокирующие процессы и что с ними делать

Spotlight (mds, mds_stores)

Spotlight индексирует новые диски автоматически. Если вы подключите большой диск, индексирование может длиться минутами или часами. Его можно временно остановить, открыв Системные настройки → Siri и Spotlight → Конфиденциальность Spotlight и добавив диск в список исключений. Либо завершите mds через Терминал — Spotlight перезапустится сам позже.

Быстрый просмотр (QuickLookUIService)

Быстрый просмотр генерирует эскизы превью, когда вы просматриваете диск в Finder. Он может держать дескрипторы файлов открытыми даже после того, как вы закрыли окно Finder. Материал Быстрый просмотр держит ваш диск в заложниках подробно это разбирает — а короткое решение состоит в том, чтобы завершить процесс Быстрого просмотра через Терминал или специальный инструмент.

iCloud и Dropbox

Службы синхронизации обращаются с внешними дисками как с любой другой папкой, если вы храните там данные синхронизации. Они держат файлы открытыми во время загрузки или разрешения конфликтов. Материал Как не дать iCloud и Dropbox блокировать извлечение диска объясняет, как приостановить синхронизацию перед извлечением.

Finder

Сам Finder может блокировать извлечение, если у вас открыто окно, показывающее содержимое диска, или если идёт копирование файлов. Закройте все окна Finder, указывающие на диск, или завершите и перезапустите Finder из меню Apple.

Медиа- и творческие приложения

Final Cut Pro, Premiere, Logic и подобные приложения держат файлы проектов открытыми, пока проект загружен. Закройте проект — а не только окно приложения — перед извлечением. См. Использование внешних дисков с Final Cut Pro без проблем с извлечением для советов, специфичных для рабочего процесса.

Почему Терминал неудобен для регулярного использования

Подход с lsof работает, но у него есть трения. Вам нужно:

  1. Открыть Терминал
  2. Знать точное имя тома
  3. Разобрать незнакомый вывод
  4. Сопоставить PID и имена процессов
  5. Выполнить отдельную команду kill
  6. Вернуться в Finder, чтобы извлечь диск

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

Предупреждение: не выдёргивайте диск без извлечения, даже если вы спешите, — это может повредить файловую систему, особенно на дисках, отформатированных в exFAT или NTFS. Риски реальны и подробно описаны в материале Может ли отключение внешнего диска без извлечения повредить его?

Способ быстрее: увидеть блокирующий процесс с одного взгляда

Ejecta делает ровно то же, что и lsof, но выводит результат в строку меню в тот самый момент, когда он вам нужен. Нажмите на значок, увидьте, какой процесс удерживает ваш диск, щёлкните, чтобы завершить его, — и извлеките диск. Без Терминала, без разбора вывода, без переключения между окнами.

Она справляется со случаями, которые чаще всего ставят людей в тупик: Spotlight, работающий в фоне, Быстрый просмотр, удерживающий кэш эскизов, демон синхронизации, который не хочет отпускать. Имя процесса прямо здесь, читаемое, с единственным действием для устранения.

Краткая справка: какой способ выбрать

Ситуация Лучший способ
Хотите понять, что происходит lsof в Терминале
Нужен быстрый разовый ответ fuser в Терминале
Делаете это регулярно и не хотите трений Приложение Ejecta в строке меню
Боретесь с упрямым системным процессом sudo lsof + kill

Если вы регулярно упираетесь в стену «диск используется», скачайте Ejecta и держите имя блокирующего процесса в одном щелчке — без всякого Терминала.