diskutil eject: Cara Mengeluarkan Drive dari Terminal Mac

Keluarkan drive Mac mana pun dari Terminal dengan diskutil, termasuk melepas kaitan paksa volume yang tak mau keluar dan memakai lsof untuk menemukan penahannya.

(Updated )

Finder memberitahumu drive sedang digunakan. Ia tidak memberitahumu apa yang menggunakannya atau apa yang harus dilakukan. Terminal melakukan keduanya.

Jawaban singkat: Jalankan diskutil eject /Volumes/YourDriveName untuk mengeluarkan drive dari Terminal. Jika gagal, gunakan sudo lsof /Volumes/YourDriveName untuk melihat apa yang memblokir pengeluaran, kill <PID> untuk menghentikan proses yang bermasalah, lalu keluarkan lagi. Sebagai pilihan terakhir, diskutil unmountDisk force /dev/diskN memaksa drive lepas, tapi lakukan ini hanya saat tidak ada yang sedang aktif menulis.

Jika kamu nyaman dengan baris perintah, Terminal adalah cara paling ampuh menangani pengeluaran drive yang membandel di macOS. Dan kalau kamu belum nyaman dengannya, perintah-perintah ini adalah tempat yang bagus untuk memulai.

Pengeluaran dasar dengan diskutil eject

Cara paling langsung mengeluarkan drive eksternal dari Terminal Mac:

diskutil eject /Volumes/YourDriveName

Ganti YourDriveName dengan nama drive yang sebenarnya, persis seperti yang muncul di Finder. Jika namanya mengandung spasi, bungkus dengan tanda kutip:

diskutil eject "/Volumes/My Drive"

Ini melakukan hal yang sama seperti mengklik tombol keluarkan di Finder. Jika berhasil, drive melepas kaitannya dengan bersih dan selesai. Jika gagal, kamu mendapat pesan kesalahan yang jauh lebih informatif ketimbang yang pernah diberikan Finder.

Kamu juga bisa melepas kaitan tanpa mengeluarkan (drive tetap terlihat di Utilitas Disk tapi tidak terkait):

diskutil unmount /Volumes/YourDriveName

Perbedaannya penting untuk drive dengan banyak partisi. unmount melepas satu volume. eject melepas perangkat fisik beserta semua volumenya sekaligus.

Menemukan pengenal drive-mu dengan diskutil list

Sebelum memakai perintah yang lebih canggih, kamu butuh pengenal drive-mu. Daftar semua disk yang tersambung:

diskutil list

Hasilnya menampilkan setiap disk dan partisinya. Drive eksternalmu akan bernama seperti disk4 atau disk5. Disk internal biasanya disk0 dan disk1.

Untuk gambaran yang lebih mudah dibaca hanya untuk drive eksternal:

diskutil list external

Begitu kamu tahu pengenal disk-nya, kamu juga bisa mengeluarkan memakai jalur /dev/ alih-alih nama volume:

diskutil eject /dev/disk4

Ini berguna saat nama volume mengandung karakter tak lazim atau saat volume tidak terkait tapi disk masih tersambung.

Cara mengeluarkan semua drive eksternal sekaligus

Jika kamu perlu mengeluarkan setiap drive eksternal dalam satu perintah, ada dua pendekatan.

Memakai diskutil untuk menemukan dan mengeluarkan semua disk eksternal:

diskutil list external | grep -o 'disk[0-9]*$' | while read disk; do diskutil eject "/dev/$disk"; done

Atau memakai AppleScript dari Terminal, yang meniru apa yang dilakukan Finder:

osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'

Pendekatan AppleScript hanya mengeluarkan disk yang dianggap Finder bisa dikeluarkan. Ia melewati disk startup dan volume jaringan, yang biasanya memang yang kamu inginkan.

Lepas kaitan paksa saat diskutil eject gagal

Jika pengeluaran normal gagal dengan kesalahan seperti “couldn’t unmount disk,” paksa saja:

diskutil unmount force /Volumes/YourDriveName

Atau lepas kaitan semua volume pada disk tertentu sekaligus:

diskutil unmountDisk force /dev/disk4

Lepas kaitan paksa menyuruh macOS melepas volume tanpa peduli apa yang menggunakannya. Ini lebih terkendali ketimbang mencabut drive secara fisik (sistem tetap membuang cache dan memberi tahu proses-prosesnya) tapi ia tidak menunggu proses menutup file dengan bersih.

Pakai lepas kaitan paksa saat kamu tahu tidak ada hal penting yang sedang ditulis. Ini setara dengan paksa keluarkan dari Utilitas Disk lewat baris perintah. Baca panduan kami tentang kapan paksa keluarkan aman vs. berisiko sebelum memakai ini pada drive yang tadinya sedang aktif digunakan.

Menemukan apa yang memblokir pengeluaran dengan lsof

Inilah perintah yang membuat Terminal tak ternilai untuk masalah pengeluaran:

lsof /Volumes/YourDriveName

lsof adalah kependekan dari “list open files.” Ia menampilkan setiap proses yang punya file terbuka di volume itu: nama proses, ID proses (PID), pengguna yang menjalankannya, dan file mana yang terbuka. (Untuk pembahasan terfokus tentang flag dan pola lsof, baca panduan perintah lsof kami untuk pengguna Mac.)

Untuk hasil lengkap (termasuk proses sistem), jalankan dengan sudo:

sudo lsof /Volumes/YourDriveName

Tanpa sudo, kamu hanya melihat proses milik akun penggunamu. Proses sistem seperti mds milik Spotlight atau backupd milik Time Machine tidak akan muncul. Dengan sudo, kamu melihat semua yang benar-benar menahan drive tetap terbuka.

Membaca hasil lsof

Hasilnya tampak seperti ini:

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

Kolom yang paling penting:

  • COMMAND: Nama proses, ini memberitahumu apa yang memblokir pengeluaran.
  • PID: ID proses, kamu akan memakainya untuk menghentikan proses jika perlu.
  • FD: FD menjelaskan mode saat file dibuka: r untuk baca, w untuk tulis, u untuk keduanya. Ini tidak menunjukkan aktivitas saat ini atau membuktikan bahwa volume tidak memiliki penulisan tertunda.
  • NAME: File spesifik yang sedang diakses, ini sering mengungkap persis kenapa prosesnya ada di sana.

Biang kerok yang umum: mds (pengindeksan Spotlight), backupd (Time Machine), Dropbox, Google Drive, Finder sendiri. Baca ulasan mendalam kami tentang Spotlight memblokir pengeluaran dan iCloud/Dropbox menghalangi pengeluaran untuk solusi yang lebih tepat sasaran.

Menghentikan proses yang memblokir

Tutup app yang didukung dari bar menu. Proses sistem ditangani terpisah dan mungkin perlu ditunggu atau memerlukan Mac dimatikan. Simpan pekerjaan, selesaikan penyalinan dan pencadangan, lalu tutup app secara normal sebelum mencoba lagi. Paksa keluar atau paksa keluarkan dapat menyebabkan kehilangan data; Ejecta tidak menjamin keamanan penulisan.

kill 789

Ini mengirim sinyal terminasi yang santun. Prosesnya dapat kesempatan menutup file dan beres-beres. Beri beberapa detik untuk keluar, lalu coba keluarkan lagi.

Jika ia tidak merespons kill yang santun:

kill -9 789

Paksa keluar adalah langkah terakhir. Tindakan ini dapat menghilangkan pekerjaan yang belum disimpan atau mengganggu penulisan. Simpan dahulu dan tunggu transfer selesai. Nama proses Spotlight tidak membuktikan akses hanya baca. Jangan paksa keluar mds atau mds_stores untuk melepaskan drive. Tunggu, tutup app, dan coba keluarkan secara normal. Ejecta mengenali proses ini, tetapi tidak menyediakan penutupan biasa untuk proses sistem. Jika drive tetap terhalang, simpan semuanya dan matikan Mac sepenuhnya sebelum mencabutnya.

Simpan pekerjaan, selesaikan penyalinan dan pencadangan, lalu tutup app secara normal sebelum mencoba lagi.

Alur kerja pemecahan masalah lengkap

Simpan pekerjaan, selesaikan penyalinan dan pencadangan, lalu tutup app secara normal sebelum mencoba lagi.

diskutil eject "/Volumes/YourDriveName"
sudo lsof "/Volumes/YourDriveName"

Nama proses Spotlight tidak membuktikan akses hanya baca. Jangan paksa keluar mds atau mds_stores untuk melepaskan drive. Tunggu, tutup app, dan coba keluarkan secara normal. Ejecta mengenali proses ini, tetapi tidak menyediakan penutupan biasa untuk proses sistem. Jika drive tetap terhalang, simpan semuanya dan matikan Mac sepenuhnya sebelum mencabutnya.

Nama proses atau daftar file terbuka tidak membuktikan bahwa tidak ada penulisan berlangsung. Simpan pekerjaan, selesaikan penyalinan dan pencadangan, lalu tutup app secara normal sebelum mencoba lagi. Paksa keluar atau paksa keluarkan dapat menyebabkan kehilangan data; Ejecta tidak menjamin keamanan penulisan.

Variasi diagnostik yang berguna

Cek apakah Spotlight secara khusus yang menahan drive-mu:

lsof /Volumes/YourDriveName | grep mds

Daftar hanya nama proses unik yang memblokir pengeluaran (tanpa baris ganda):

lsof /Volumes/YourDriveName | awk '{print $1}' | sort -u

Pantau I/O disk secara waktu nyata untuk melihat apakah ada yang sedang aktif menulis:

sudo fs_usage -f diskio | grep YourDriveName

Ini berjalan terus-menerus dan menampilkan setiap operasi disk saat terjadi. Tekan Control-C untuk menghentikannya. Pakai ini saat lsof menunjukkan sebuah proses tapi kamu tidak yakin apakah ia sedang aktif menulis atau cuma menahan handle usang.

Saat Terminal lebih merepotkan ketimbang manfaatnya

Perintah-perintah ini ampuh, dan begitu kamu memakainya beberapa kali, mereka jadi naluri kedua. Tapi ada ongkos nyata dari beralih konteks dari pekerjaanmu ke jendela Terminal: menjalankan perintah diagnostik, mengurai hasil teknis, memutuskan PID mana yang aman dihentikan.

Ejecta: Ejecta menyediakan diagnosis drive gratis tanpa uji coba berbatas waktu. Lisensi berbayar membuka tindakan keluar dan keluarkan untuk app yang didukung, Keluarkan Semua, dan kontrol Time Machine. Proses sistem mungkin memerlukan penantian, otorisasi, atau mematikan Mac. Simpan pekerjaan dan selesaikan transfer terlebih dahulu.

Tanpa batas jumlah komputer atau aktivasi. Ajukan pengembalian dana dalam 30 hari.

Ejecta menyediakan diagnosis drive gratis tanpa uji coba berbatas waktu. Lisensi berbayar membuka tindakan keluar dan keluarkan untuk app yang didukung, Keluarkan Semua, dan kontrol Time Machine. Proses sistem mungkin memerlukan penantian, otorisasi, atau mematikan Mac. Simpan pekerjaan dan selesaikan transfer terlebih dahulu.

Beli Sekarang - $29 $9.99