diskutil eject: як витягувати диски через Термінал на Mac
Витягуйте будь-який диск Mac через Термінал за допомогою diskutil — зокрема примусово відмонтуйте том, який не витягується, і знайдіть за допомогою lsof те, що його утримує.
Finder каже, що диск використовується. Він не каже, що саме його використовує і що з цим робити. Термінал робить і те, і інше.
Швидка відповідь: виконайте
diskutil eject /Volumes/YourDriveName, щоб витягнути диск через Термінал. Якщо не вдається, скористайтесяsudo lsof /Volumes/YourDriveName, щоб побачити, що блокує витягнення,kill <PID>, щоб завершити процес, який заважає, а потім витягніть диск знову. У крайньому разі командаdiskutil unmountDisk force /dev/diskNпримусово вимикає диск, але робіть це лише тоді, коли на нього нічого активно не записується.
Якщо вам комфортно працювати з командним рядком, Термінал — це найпотужніший спосіб упоратися з упертими дисками, які не хочуть витягуватися в macOS. А якщо вам поки що некомфортно, ці команди — гарна точка для початку.
Базове витягнення за допомогою diskutil eject
Найпряміший спосіб витягнути зовнішній диск через Термінал на Mac:
diskutil eject /Volumes/YourDriveName
Замініть YourDriveName на справжню назву вашого диска — рівно так, як вона відображається у Finder. Якщо назва містить пробіли, візьміть її в лапки:
diskutil eject "/Volumes/My Drive"
Це робить те саме, що й натискання кнопки витягнення у Finder. Якщо все спрацює, диск чисто відмонтовується — і готово. Якщо ні, ви отримаєте набагато інформативніше повідомлення про помилку, ніж будь-коли дає Finder.
Можна також відмонтувати диск без витягнення (диск залишається видимим у Дисковій утиліті, але не підключений):
diskutil unmount /Volumes/YourDriveName
Ця різниця має значення для дисків із кількома розділами. unmount прибирає один том. eject прибирає фізичний пристрій і всі його томи одразу.
Як знайти ідентифікатор диска за допомогою diskutil list
Перш ніж користуватися складнішими командами, потрібно знати ідентифікатор вашого диска. Виведіть список усіх підключених дисків:
diskutil list
У виводі показано кожен диск і його розділи. Ваш зовнішній диск матиме приблизно таку назву, як disk4 чи disk5. Внутрішні диски зазвичай мають назви disk0 і disk1.
Для більш зручного огляду лише зовнішніх дисків:
diskutil list external
Знаючи ідентифікатор диска, ви можете витягнути його, скориставшись шляхом /dev/ замість назви тома:
diskutil eject /dev/disk4
Це корисно, коли назва тома містить незвичні символи або коли том не підключений, але диск усе ще приєднаний.
Як витягнути всі зовнішні диски одразу
Якщо потрібно витягнути кожен зовнішній диск однією командою, є два підходи.
За допомогою diskutil можна знайти й витягнути всі зовнішні диски:
diskutil list external | grep -o 'disk[0-9]*$' | while read disk; do diskutil eject "/dev/$disk"; done
Або за допомогою AppleScript із Термінала, що повторює дії Finder:
osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
Підхід із AppleScript витягує лише ті диски, які Finder вважає такими, що можна витягти, — він пропускає завантажувальний диск і мережеві томи, що зазвичай і потрібно.
Примусове відмонтування, коли diskutil eject не спрацьовує
Якщо звичайне витягнення завершується помилкою на кшталт «couldn’t unmount disk», виконайте примусово:
diskutil unmount force /Volumes/YourDriveName
Або відмонтуйте всі томи на конкретному диску одразу:
diskutil unmountDisk force /dev/disk4
Примусове відмонтування наказує macOS вивільнити том незалежно від того, що його використовує. Це контрольованіше, ніж фізичне від’єднання диска — система все одно скидає кеші та сповіщає процеси, — але вона не чекає, поки процеси чисто закриють файли.
Використовуйте примусове відмонтування, коли впевнені, що нічого важливого не записується. Це аналог примусового витягнення з Дискової утиліти в командному рядку. Перегляньте наш посібник про те, коли примусове витягнення безпечне, а коли ризиковане, перш ніж застосовувати це до диска, який активно використовувався.
Як знайти за допомогою lsof те, що блокує витягнення
Це команда, яка робить Термінал незамінним для проблем із витягненням:
lsof /Volumes/YourDriveName
lsof розшифровується як «list open files» (список відкритих файлів). Вона показує кожен процес, який має відкритий файл на цьому томі, — назву процесу, його ідентифікатор (PID), користувача, від імені якого він запущений, і який саме файл відкрито. (Детальний розбір прапорців і шаблонів lsof дивіться в нашому посібнику з команди lsof для користувачів Mac.)
Щоб отримати повні результати (зокрема системні процеси), запустіть її з sudo:
sudo lsof /Volumes/YourDriveName
Без sudo ви бачите лише процеси, що належать вашому обліковому запису. Системні процеси, як-от mds від Spotlight чи backupd від Time Machine, не з’являться. Із sudo ви бачите все, що насправді утримує диск відкритим.
Як читати вивід lsof
Вивід виглядає приблизно так:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mds 123 root 12r REG 1,8 4096 789 /Volumes/MyDrive/.Spotlight-V100/...
Finder 456 aaron 15r DIR 1,8 1024 2 /Volumes/MyDrive
Dropbox 789 aaron 8u REG 1,8 8192 345 /Volumes/MyDrive/Projects/.dropbox
Найважливіші стовпці:
- COMMAND: назва процесу — саме вона підказує, що блокує витягнення.
- PID: ідентифікатор процесу — він знадобиться, щоб завершити процес, якщо буде потрібно.
- FD: FD описує режим відкриття файлу: r для читання, w для запису, u для обох. Це не поточна активність і не доказ відсутності незавершених записів на томі.
- NAME: конкретний файл, до якого звертаються, — це часто чітко показує, чому процес там є.
Поширені винуватці: mds (індексування Spotlight), backupd (Time Machine), Dropbox, Google Drive, сам Finder. Перегляньте наші докладні розбори про те, як Spotlight блокує витягнення диска і як iCloud/Dropbox заважають витягненню диска, щоб знайти прицільні рішення.
Завершення процесів, що блокують диск
Завершуйте підтримувані програми з рядка меню. Системні процеси обробляються окремо та можуть потребувати очікування або вимкнення Mac. Збережіть роботу, завершіть копіювання та резервне копіювання й закрийте програми звичайним способом перед повторним вийманням. Примусове завершення чи виймання може спричинити втрату даних; Ejecta не підтверджує безпечність запису.
kill 789
Це надсилає сигнал коректного завершення. Процес отримує можливість закрити файли й прибрати за собою. Дайте йому кілька секунд, щоб завершитися, а потім спробуйте витягнути диск знову.
Якщо він не реагує на коректне завершення:
kill -9 789
Примусове завершення є крайнім заходом. Воно може призвести до втрати незбереженої роботи або перервати запис. Спочатку збережіть роботу й дочекайтеся завершення передавання. Назви процесів Spotlight не доводять доступу лише для читання. Не завершуйте mds або mds_stores примусово заради звільнення диска. Зачекайте, закрийте програми й повторіть звичайне виймання. Ejecta визначає ці процеси, але не пропонує звичайного завершення системних процесів. Якщо диск залишається заблокованим, збережіть усе й повністю вимкніть Mac перед від’єднанням.
Збережіть роботу, завершіть копіювання та резервне копіювання й закрийте програми звичайним способом перед повторним вийманням.
Повний порядок усунення проблеми
Збережіть роботу, завершіть копіювання та резервне копіювання й закрийте програми звичайним способом перед повторним вийманням.
diskutil eject "/Volumes/YourDriveName"
sudo lsof "/Volumes/YourDriveName"
Назви процесів Spotlight не доводять доступу лише для читання. Не завершуйте mds або mds_stores примусово заради звільнення диска. Зачекайте, закрийте програми й повторіть звичайне виймання. Ejecta визначає ці процеси, але не пропонує звичайного завершення системних процесів. Якщо диск залишається заблокованим, збережіть усе й повністю вимкніть Mac перед від’єднанням.
Назва процесу або список відкритих файлів не доводить відсутності запису. Збережіть роботу, завершіть копіювання та резервне копіювання й закрийте програми звичайним способом перед повторним вийманням. Примусове завершення чи виймання може спричинити втрату даних; Ejecta не підтверджує безпечність запису.
Корисні варіанти діагностики
Перевірте, чи саме Spotlight утримує ваш диск:
lsof /Volumes/YourDriveName | grep mds
Виведіть лише унікальні назви процесів, що блокують витягнення (без повторюваних рядків):
lsof /Volumes/YourDriveName | awk '{print $1}' | sort -u
Спостерігайте за дисковим вводом-виводом у реальному часі, щоб побачити, чи щось активно записується:
sudo fs_usage -f diskio | grep YourDriveName
Ця команда працює безперервно й показує кожну дискову операцію в міру її виконання. Натисніть Control-C, щоб зупинити. Скористайтеся нею, коли lsof показує процес, але ви не впевнені, чи він активно записує, чи просто тримає застарілий дескриптор.
Коли Термінал — це більше клопоту, ніж користі
Ці команди потужні, і коли ви скористаєтеся ними кілька разів, вони стануть звичними. Але є реальна ціна за перемикання від роботи до вікна Термінала — запуск діагностичних команд, розбір технічного виводу, рішення, який PID безпечно завершувати.
Ejecta: Ejecta пропонує безкоштовну діагностику дисків без обмеженого пробного періоду. Платна ліцензія відкриває завершення й виймання для підтримуваних програм, виймання всіх дисків і керування Time Machine. Системні процеси можуть потребувати очікування, авторизації або вимкнення. Спочатку збережіть роботу й завершіть передавання.
Без обмежень на кількість комп’ютерів або активацій. Запит повернення коштів протягом 30 днів.
Ejecta пропонує безкоштовну діагностику дисків без обмеженого пробного періоду. Платна ліцензія відкриває завершення й виймання для підтримуваних програм, виймання всіх дисків і керування Time Machine. Системні процеси можуть потребувати очікування, авторизації або вимкнення. Спочатку збережіть роботу й завершіть передавання.
Купити -Схожі статті
Як безпечно витягнути USB-диск на Mac
Усі способи витягнути USB-диск на Mac, а також що робити, коли macOS каже, що диск використовується, і не дає …
Як знайти, відкрити й користуватися зовнішнім жорстким диском на Mac
Під’єднайте зовнішній жорсткий диск до Mac, знайдіть його у Finder, відкрийте свої файли й безпечно …
Чому Mac стає повільнішим, коли підключено зовнішній диск
Підключення зовнішнього диска не повинно сповільнювати всю систему, але часто саме так і стається. Ось що …
Розуміння дозволів дисків macOS і зовнішніх накопичувачів
Проблеми з дозволами можуть завадити вам отримати доступ до зовнішнього диска, змінити його вміст або …