Как узнать, какой процесс использует диск на Mac
Mac не извлекает диск? Вот как точно определить, какой процесс его блокирует — с помощью Мониторинга системы, Терминала и более быстрого способа в один щелчок.
Когда macOS отказывается извлекать внешний диск, она сообщает, что что-то его использует — и на этом останавливается. Ни имени, ни указателя, ни подсказки. Найти виновника самостоятельно — дело нескольких шагов, но вполне выполнимое. Это руководство проведёт вас по всем способам: от встроенных инструментов Apple до команд Терминала, которые раскрывают то, что скрывает графический интерфейс.
Почему macOS просто не скажет вам
Это настоящее раздражение, а не ошибка пользователя. macOS всегда показывала ошибку «диск используется», не называя процесс-нарушитель. Операционная система знает, какой процесс держит открытый дескриптор файла на томе, — она просто не выводит эту информацию в Finder или в диалоге извлечения.
Результат: вы закрываете все видимые приложения, ничего не меняется, а диск по-прежнему не извлекается. Как описано в руководстве по устранению ошибки macOS «Диск используется», блокировщиком часто оказывается фоновый процесс — индексирование Spotlight, генерация эскизов Быстрым просмотром или демон облачной синхронизации, — а не то, что вам пришло бы в голову завершить вручную.
Способ 1: Мониторинг системы (ограничен, но точка отсчёта)
Мониторинг системы — первое, куда большинство людей заглядывают. Для этой конкретной задачи он не идеален, но может помочь сузить круг.
- Откройте Мониторинг системы (Программы → Утилиты → Мониторинг системы или через поиск Spotlight).
- Нажмите вкладку Диск вверху.
- Отсортируйте по столбцу Прочитано байт или Записано байт, чтобы увидеть, какие процессы активно читают или пишут.
Проблема: Мониторинг системы показывает дисковую активность по всем томам, а не только по вашему внешнему диску. Процесс в верхней части списка может писать на внутренний 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— индексирование SpotlightQuickLookUIService— генерация эскизов Быстрым просмотромcloudd,birdилиcom.apple.iCloudDrive— синхронизация iCloudbackupd— Time MachineFinder— открытые окна 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 работает, но у него есть трения. Вам нужно:
- Открыть Терминал
- Знать точное имя тома
- Разобрать незнакомый вывод
- Сопоставить PID и имена процессов
- Выполнить отдельную команду kill
- Вернуться в Finder, чтобы извлечь диск
Если вы разработчик или системный администратор, который живёт в Терминале, это нормально. Если вы видеомонтажёр или обычный пользователь Mac, который просто хочет безопасно отключить диск, — это слишком много церемоний для задачи, которая должна занимать пару секунд.
Предупреждение: не выдёргивайте диск без извлечения, даже если вы спешите, — это может повредить файловую систему, особенно на дисках, отформатированных в exFAT или NTFS. Риски реальны и подробно описаны в материале Может ли отключение внешнего диска без извлечения повредить его?
Способ быстрее: увидеть блокирующий процесс с одного взгляда
Ejecta делает ровно то же, что и lsof, но выводит результат в строку меню в тот самый момент, когда он вам нужен. Нажмите на значок, увидьте, какой процесс удерживает ваш диск, щёлкните, чтобы завершить его, — и извлеките диск. Без Терминала, без разбора вывода, без переключения между окнами.
Она справляется со случаями, которые чаще всего ставят людей в тупик: Spotlight, работающий в фоне, Быстрый просмотр, удерживающий кэш эскизов, демон синхронизации, который не хочет отпускать. Имя процесса прямо здесь, читаемое, с единственным действием для устранения.
Краткая справка: какой способ выбрать
| Ситуация | Лучший способ |
|---|---|
| Хотите понять, что происходит | lsof в Терминале |
| Нужен быстрый разовый ответ | fuser в Терминале |
| Делаете это регулярно и не хотите трений | Приложение Ejecta в строке меню |
| Боретесь с упрямым системным процессом | sudo lsof + kill |
Если вы регулярно упираетесь в стену «диск используется», скачайте Ejecta и держите имя блокирующего процесса в одном щелчке — без всякого Терминала.