Як дізнатися, який процес використовує диск на Mac

Mac не витягує ваш диск? Ось як з’ясувати, який саме процес його блокує — за допомогою Моніторингу системи, Терміналу та швидшого методу в один клік.

Коли macOS відмовляється витягувати зовнішній диск, вона повідомляє, що щось його використовує, — і на цьому зупиняється. Жодної назви, жодної підказки, жодного натяку. Знайти винуватця самостійно потребує кількох кроків, але це цілком реально. Цей посібник проведе вас усіма методами — від вбудованих інструментів Apple до команд Терміналу, які показують те, що графічний інтерфейс приховує.

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

Це справжнє роздратування, а не помилка користувача. macOS завжди показувала помилку «диск використовується», не називаючи процес-винуватець. Операційна система знає, який процес тримає відкритий дескриптор файлу на томі, — вона просто не показує цю інформацію у Finder чи в діалозі витягнення.

Як наслідок: ви закриваєте всі видимі програми, нічого не змінюється, а диск усе одно не витягується. Як описано в посібнику з усунення помилки «Диск використовується» в macOS, блокувальником часто є фоновий процес — індексування Spotlight, генерація мініатюр QuickLook чи демон хмарної синхронізації — а не щось, що вам спало б на думку завершити вручну.

Метод 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 — генерація мініатюр QuickLook
  • 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 перезапуститься сам згодом.

QuickLook (QuickLookUIService)

QuickLook генерує мініатюри попереднього перегляду, коли ви переглядаєте диск у Finder. Він може тримати дескриптори файлів відкритими навіть після того, як ви закрили вікно Finder. QuickLook тримає ваш диск у заручниках розглядає це детально — коротке вирішення полягає в тому, щоб завершити процес QuickLook через Термінал чи спеціальний інструмент.

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, що працює у фоні, QuickLook, що тримає кеш мініатюр, демон синхронізації, який не хоче відпускати. Назва процесу прямо тут, читабельна, з єдиною дією для розв’язання проблеми.

Швидкий довідник: який метод обрати

Ситуація Найкращий метод
Ви хочете зрозуміти, що відбувається lsof у Терміналі
Вам потрібна швидка разова відповідь fuser у Терміналі
Ви робите це регулярно й хочете жодних незручностей застосунок Ejecta у рядку меню
Ви розбираєтеся з упертим системним процесом sudo lsof + kill

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