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.
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/YourDriveNameuntuk mengeluarkan drive dari Terminal. Jika gagal, gunakansudo lsof /Volumes/YourDriveNameuntuk melihat apa yang memblokir pengeluaran,kill <PID>untuk menghentikan proses yang bermasalah, lalu keluarkan lagi. Sebagai pilihan terakhir,diskutil unmountDisk force /dev/diskNmemaksa 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: Deskriptor file dan mode akses.
rberarti baca,wberarti tulis,uberarti baca/tulis. Jika kamu melihatwatauu, ada yang sedang aktif menulis ke drive, dan paksa keluarkan jadi berisiko. - 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
Begitu kamu tahu PID proses yang memblokir, hentikan dengan tertib:
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
Ini memaksa terminasi seketika. Prosesnya tidak sempat beres-beres. Pakai ini sebagai pilihan terakhir — terutama untuk proses sistem.
Untuk menghentikan semua proses yang memakai volume tertentu dalam satu perintah:
sudo lsof -t /Volumes/YourDriveName | xargs kill
Flag -t membuat lsof hanya menampilkan PID, dan xargs mengoper PID itu ke kill. Hati-hati: ini menghentikan setiap proses yang memakai drive, termasuk yang mungkin sedang di tengah pekerjaan penting.
Alur kerja pemecahan masalah lengkap
Berikut urutan penuh untuk drive yang tak mau keluar:
# Step 1: Try normal eject
diskutil eject /Volumes/YourDriveName
# Step 2: If that fails, see what's blocking
sudo lsof /Volumes/YourDriveName
# Step 3: Kill the offending process (replace PID with actual number)
kill 12345
# Step 4: Try ejecting again
diskutil eject /Volumes/YourDriveName
# Step 5: If still stuck, force unmount
diskutil unmountDisk force /dev/disk4
Sebagian besar masalah selesai di Langkah 3. Kenali penyumbatnya, hentikan, keluarkan dengan bersih.
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 melakukan semua hal di atas secara otomatis. Ia memantau drive-mu, mengidentifikasi setiap proses yang memblokir, dan memberimu tombol sekali klik untuk menutup masing-masing. Informasi yang sama yang akan kamu dapat dari sudo lsof, disajikan secara visual tepat di bilah menumu — tanpa perintah yang harus diingat, tanpa hasil yang harus diurai.
Dengan $9.99, kamu mendapat alat yang menggantikan seluruh alur kerja Terminal yang berbelit ini dengan satu klik. Jika kamu bergulat dengan masalah ini lebih dari sekali sebulan, alatnya menutup biayanya sendiri lewat frustrasi yang terhemat dalam minggu pertama. Coba Ejecta gratis selama 7 hari — tanpa perlu Terminal.
Jika kamu lebih suka tidak menggunakan Terminal setiap saat, Ejecta menunjukkan persis proses mana yang memblokir drive kamu — dan memungkinkan kamu keluar darinya dengan satu klik, langsung dari bilah menu.
Beli Sekarang — $9.99