Як дізнатися, який процес використовує диск на Mac
Mac не витягує ваш диск? Ось як з’ясувати, який саме процес його блокує — за допомогою Моніторингу системи, Терміналу та швидшого методу в один клік.
Коли macOS відмовляється витягувати зовнішній диск, вона повідомляє, що щось його використовує, — і на цьому зупиняється. Жодної назви, жодної підказки, жодного натяку. Знайти винуватця самостійно потребує кількох кроків, але це цілком реально. Цей посібник проведе вас усіма методами — від вбудованих інструментів Apple до команд Терміналу, які показують те, що графічний інтерфейс приховує.
Чому macOS просто не каже вам
Це справжнє роздратування, а не помилка користувача. macOS завжди показувала помилку «диск використовується», не називаючи процес-винуватець. Операційна система знає, який процес тримає відкритий дескриптор файлу на томі, — вона просто не показує цю інформацію у Finder чи в діалозі витягнення.
Як наслідок: ви закриваєте всі видимі програми, нічого не змінюється, а диск усе одно не витягується. Як описано в посібнику з усунення помилки «Диск використовується» в macOS, блокувальником часто є фоновий процес — індексування Spotlight, генерація мініатюр QuickLook чи демон хмарної синхронізації — а не щось, що вам спало б на думку завершити вручну.
Метод 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— генерація мініатюр QuickLookcloudd,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 перезапуститься сам згодом.
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 працює, але має свої незручності. Вам потрібно:
- Відкрити Термінал
- Знати точну назву тому
- Розібрати незнайомий вивід
- Знайти PID і назви процесів
- Виконати окрему команду kill
- Повернутися до Finder, щоб витягнути диск
Якщо ви розробник чи системний адміністратор, який живе в Терміналі, це нормально. Якщо ви відеоредактор чи звичайний користувач Mac, який просто хоче безпечно від’єднати диск, це забагато церемоній для завдання, яке мало б займати дві секунди.
Попередження: Не висмикуйте диск без витягнення, навіть якщо ви поспішаєте, — це може пошкодити файлову систему, особливо на дисках, відформатованих як exFAT чи NTFS. Ризики цілком реальні й детально описані в Чи може від’єднання зовнішнього диска без витягнення його пошкодити?
Швидший спосіб: побачити процес, що блокує, з першого погляду
Ejecta робить саме те, що й lsof, але показує результат у вашому рядку меню тієї миті, коли він вам потрібен. Клікніть піктограму, побачте, який процес тримає ваш диск, клікніть, щоб завершити його, і витягніть — без Терміналу, без розбору виводу, без перемикання між вікнами.
Вона впорається з випадками, які найчастіше збивають людей з пантелику: Spotlight, що працює у фоні, QuickLook, що тримає кеш мініатюр, демон синхронізації, який не хоче відпускати. Назва процесу прямо тут, читабельна, з єдиною дією для розв’язання проблеми.
Швидкий довідник: який метод обрати
| Ситуація | Найкращий метод |
|---|---|
| Ви хочете зрозуміти, що відбувається | lsof у Терміналі |
| Вам потрібна швидка разова відповідь | fuser у Терміналі |
| Ви робите це регулярно й хочете жодних незручностей | застосунок Ejecta у рядку меню |
| Ви розбираєтеся з упертим системним процесом | sudo lsof + kill |
Якщо ви регулярно натрапляєте на стіну «диск використовується», завантажте Ejecta і тримайте назву процесу, що блокує, на відстані одного кліку — без жодного Терміналу.