Kapan saya melakukannya
sudo umount /media/KINGSTON
saya mendapatkan
umount: /media/KINGSTON: device is busy.
Saya menutup semua jendela dan memastikan semua shell menunjuk ke direktori lain. Bagaimana saya bisa menemukan proses mana yang mencegah umount?
Jawaban:
buka terminal:
Ini akan menampilkan sesuatu seperti ini:
Ini akan memberi Anda pid dari proses menggunakan volume ini. Karakter tambahan di akhir pid akan memberikan beberapa info tambahan. (c dalam 3106c)
c - proses menggunakan file sebagai direktori kerja saat ini
m - file dipetakan dengan mmap
o - proses menggunakannya sebagai file terbuka
r - file adalah direktori root dari proses
t - proses mengakses file sebagai file teks
y - file ini adalah terminal pengendali untuk proses
Jadi untuk meng-unmount, matikan saja pids-nya dan coba lagi unmount
Catatan: Untuk menemukan nama aplikasi persis dari pids ini, Anda dapat menggunakan perintah ini
Sebagai contoh :
cat /proc/11086/cmdline
ini akan menampilkan sesuatu seperti di bawah ini.
Semoga ini bisa membantu
sumber
ps <pid>
daripada mengedit file di / proc untuk melihat nama perintah dan argumen.Alat yang paling berguna adalah lsof . Ini menunjukkan file apa yang digunakan oleh proses apa. Jika
/media/KINGSTON
adalah titik pemasangan (nama perangkat juga akan berfungsi), perintah berikut menunjukkan semua file yang digunakan pada titik pemasangan ini:Jika Anda menjalankan perintah ini sebagai pengguna biasa, itu hanya akan menunjukkan proses Anda sendiri¹. Jalankan
sudo lsof /media/KINGSTON
untuk melihat semua proses pengguna.Output dari
lsof
terlihat seperti ini:The
COMMAND
kolom menunjukkan nama program dieksekusi danPID
kolom menunjukkan proses ID. TheNAME
kolom menunjukkan nama file; Anda mungkin melihat(deleted)
apakah file itu dihapus saat terbuka (ketika file dihapus, itu tidak lagi memiliki nama, tetapi masih ada sampai proses terakhir menggunakannya menutup file).USER
harus jelas. Kolom lain tidak penting di sini kecuali mungkinFD
, yang menunjukkan bagaimana file digunakan oleh proses:cwd
: direktori kerja saat initxt
: program executable²mem
: file yang dipetakan memori (di sini, anggap sebagai file terbuka)r
untuk membaca danw
menulisTidak ada cara mekanis untuk menemukan jendela tempat file dibuka (ini sebenarnya tidak bermakna secara teknis: jika suatu proses memiliki beberapa jendela, file tidak secara khusus dikaitkan dengan satu jendela atau lainnya), atau bahkan tidak ada cara sederhana untuk mengidentifikasi jendela proses (dan tentu saja suatu proses tidak harus memiliki jendela apa pun). Tetapi biasanya nama perintah dan nama file sudah cukup untuk menemukan pelaku dan menutup file dengan benar.
Jika Anda tidak dapat menutup file dan hanya ingin mengakhiri semuanya, Anda dapat mematikan prosesnya dengan
kill 31421
(di mana31421
ID prosesnya) ataukill -HUP 31421
("menutup telepon"). Jika pembunuhan polos tidak melakukan trik, membunuh dengan prasangka ekstrem:kill -KILL 31421
.Ada GUI untuk lsof, glsof , tetapi belum cukup siap untuk prime time, dan belum dikemas untuk Ubuntu sejauh ini.
¹ Lsof dapat mencantumkan beberapa informasi tentang proses pengguna lain, tetapi tidak mendeteksi titik pemasangan jadi tidak akan mencantumkannya jika Anda menetapkan titik pemasangan.
² Kode yang dapat dieksekusi sering disebut teks dalam diskusi format yang dapat dieksekusi.
sumber
Ini juga dapat membantu:
sumber
grep "media/KINGSTON"
Sementara itu, perintah fuser telah jauh meningkat. Anda dapat melakukan pekerjaan penuh dengan satu perintah:
Dimana:
k
membunuh proses yang menyinggung,v
menunjukkan terlebih dahulu proses dan penggunanyai
meminta Anda untuk konfirmasi.Jika beberapa proses menolak, maka coba lagi dengan
fuser -ickv -9
(atau lebih umum dengan-SIGNAL
) yang membunuh yang paling keras kepala.Tetapi Anda akan selalu menemukan beberapa proses "abadi" ...!
Dalam kasus ini saya baru-baru ini belajar menggunakannya
sebagai sumber terakhir, yang sampai sekarang bekerja untuk saya setiap saat.
sumber
vboxmanage
. -_-