Проблема з витягненням на Mac, яку Apple ігнорує роками
Користувачі Mac скаржаться на туманні повідомлення про помилку витягнення ще з часів PowerPC. Apple так і не виправила це. Ось історія цієї дратівливої проблеми.
Спробуйте витягнути зовнішній диск на Mac — і часом ви отримаєте таке повідомлення: «Диск не вийнято, оскільки одна чи кілька програм можуть його використовувати».
Одна або кілька програм. Можуть його використовувати. Не «використовує». Не які саме програми. Просто туманне звинувачення, що щось десь, можливо, тримає файл відкритим.
Це повідомлення про помилку існує практично в незмінному вигляді понад п’ятнадцять років. Користувачі Mac просять виправити це на форумах підтримки Apple щонайменше з часів Snow Leopard. Скарги тривають через кожну версію macOS: Mountain Lion, Mavericks, Catalina, Monterey, Ventura, Sonoma, Sequoia. Повідомлення ніколи не змінюється. Apple ніколи його не виправляє.
Проблема очевидна
Коли ви не можете витягнути диск, вам потрібні два відомості: який процес його блокує і як цей процес зупинити. macOS не дає вам жодного.
Операційна система точно знає, який процес тримає відкриті файли на диску. Вона мусить це знати, адже саме так вона визначає, чи дозволити витягнення. Та замість того, щоб поділитися цією інформацією, macOS дає вам текстовий еквівалент знизування плечима.
Порівняйте це з командою Терміналу lsof, яка виводить кожен процес із відкритими файлами за вказаним шляхом. Інформація існує. Вона доступна. Apple просто вирішила не виносити її в діалог помилки.
Що насправді роблять користувачі
Зіткнувшись із цим марним повідомленням про помилку, користувачі Mac виробили цілий фольклор обхідних шляхів, що передається через дописи на форумах і коментарі в блогах.
Оптимісти чекають і пробують знову, сподіваючись, що якийсь загадковий процес сам завершиться. Іноді це спрацьовує. Часто — ні.
Технічно підковані відкривають Термінал і виконують lsof /Volumes/DriveName, а тоді розбирають вивід, щоб визначити винуватців. Для цього потрібно знати, що така команда існує, розуміти, як читати її вивід, і не боятися завершувати процеси.
Нетерплячі примусово витягують диск і сподіваються на краще. Іноді все гаразд. Іноді це пошкоджує дані. Не знаючи, що насправді використовує диск, оцінити ризик неможливо.
Роздратовані просто перезавантажують Mac. Це точно спрацьовує, але абсурдно, що для від’єднання диска треба перезавантажувати комп’ютер.
Чому Apple цього не виправила?
Напевно знає лише Apple, але є кілька теорій:
Діалог помилки довелося б змінити, а Apple історично уникає додавання складності до повідомлень, які бачить користувач. Але «Safari використовує цей диск» не складніше за «одна або кілька програм можуть його використовувати». Зате корисніше.
Список блокувальних процесів в окремих випадках міг би бути довгим чи заплутаним. Це правда, але показати головного винуватця було б нескінченно краще, ніж не показувати нічого. А для крайніх випадків кнопка «Показати деталі» — стандартна практика.
Більшість користувачів стикаються з цією проблемою не настільки часто, щоб голосно скаржитися. Можливо, але спільноти підтримки Apple й форуми MacRumors повні гілок, що тягнуться роками. Проблема добре задокументована.
Справжня відповідь — це, мабуть, пріоритети. Інженерні ресурси Apple обмежені, а ця проблема, хоч і дратівлива, не заважає людям користуватися своїми Mac. Вона лише змушує їх лаятися собі під ніс кожні кілька тижнів.
Проблема загострюється
Що поширенішим стає зовнішнє сховище (швидкі SSD з USB-C, портативні диски для відеомонтажу, диски для резервних копій Time Machine), то частіше користувачі стикаються з цією помилкою.
macOS також запускає дедалі більше фонових процесів, що звертаються до зовнішніх дисків. Індексування Spotlight, моніторинг Time Machine, синхронізація iCloud, різноманітні процеси-демони. Кількість потенційних блокувальників зросла, а от повідомлення про помилку лишається таким самим туманним.
Користувачі, що переходять зі старіших Mac, повідомляють, що проблема частіше виникає на машинах з Apple Silicon. Чи це зміна в програмному забезпеченні, чи просто враження — неясно, але скарги посилилися після переходу на M1.
Сторонні рішення існують
Сам факт, що сторонні розробники збудували цілі програми навколо цієї проблеми, про щось та й говорить.
What’s Keeping Me був популярною утилітою, яка показувала, які процеси блокують диск. Його закинули багато років тому, і на сучасній macOS він уже не працює, але саме його існування довело, що попит на таку функцію є.
З’явилися різні утиліти для рядка меню та скрипти, щоб заповнити цю прогалину. Одні стежать за дисками й попереджають про проблеми з витягненням, перш ніж ті виникнуть. Інші автоматизують роботу з lsof, щоб вам не доводилося набирати команди в Терміналі.
Цих інструментів не мало б існувати. Функціональність, яку вони надають, — це базова можливість операційної системи, яку Apple вирішила не відкривати.
Як виглядало б виправлення
Мінімально життєздатне виправлення просте: змінити діалог помилки так, щоб він повідомляв, який процес блокує витягнення. «Диск не можна витягнути, оскільки його індексує Spotlight» точно каже вам, що відбувається. Ви можете дочекатися завершення індексування, або завершити Spotlight, або вирішити примусово витягнути диск, усвідомлюючи ризик.
Краще виправлення додало б можливість завершити блокувальний процес прямо з діалогу. «Safari тримає відкриті файли на цьому диску. [Завершити Safari і витягнути] [Скасувати]» розв’язує проблему одним кліком, не змушуючи користувачів порпатися в Моніторингу системи.
Ідеальне виправлення було б проактивним: попереджати користувачів, коли на зовнішньому диску є незбережені зміни або коли фонові процеси активно його використовують. Дайте людям знати, перш ніж вони спробують витягнути диск і роздратуються.
Жодне з цього не є технічно складним. Найскладніше — це, мабуть, продуктове рішення взагалі щось змінити.
А поки що
Можливо, Apple колись це виправить. Відомо, що вони беруться за давні дрібні дратівливі речі, коли зорі сходяться. А до того часу обхідні шляхи лишаються ті самі: команди Терміналу, детективна робота в Моніторингу системи або інструменти на кшталт Ejecta, які виконують детективну роботу за вас.
Від’єднати диск не має бути так складно. Але це складно, і так було роками, а Apple, схоже, байдуже.
Якщо ви не хочете щоразу користуватися Терміналом, Ejecta покаже вам, який саме процес блокує ваш диск, — і дасть завершити його одним кліком прямо з рядка меню.
Купити — $9.99