Yaptığımda
sudo umount /media/KINGSTON
Anladım
umount: /media/KINGSTON: device is busy.
Tüm pencereleri kapatıyorum ve tüm kabukların diğer dizinlere işaret ettiğinden emin oluyorum. Hangi süreci umountu önlediğini nasıl bulabilirim?
Yaptığımda
sudo umount /media/KINGSTON
Anladım
umount: /media/KINGSTON: device is busy.
Tüm pencereleri kapatıyorum ve tüm kabukların diğer dizinlere işaret ettiğinden emin oluyorum. Hangi süreci umountu önlediğini nasıl bulabilirim?
bir terminali açın:
fuser -c /media/KINGSTON
Bunun gibi bir şey çıkacak:
/media/KINGSTON/: 3106c 11086
Bu, bu birimi kullanan işlemlerin pidini verecektir. Pid'in sonundaki ekstra karakter, bazı ekstra bilgi verecektir. (3106c'de c)
c - süreç dosyayı geçerli çalışma dizini olarak kullanıyor
m - dosya mmap ile eşleştirilmiştir
o - süreç bunu açık bir dosya olarak kullanıyor
r - dosya, sürecin kök dizinidir
t - işlem dosyaya bir metin dosyası olarak erişiyor
y - bu dosya, sürecin kontrol terminalidir
Öyleyse, o dökümleri kaldırmak ve tekneyi yeniden denemek için
sudo kill -9 3106 11086
sudo umount /media/KINGSTON
Not: Bu başvuruların tam adını bulmak için bu komutu kullanabilirsiniz
cat /proc/<pid>/cmdline
Örneğin: cat /proc/11086/cmdline
Bu, aşağıdakine benzer bir sonuç verecektir.
evince^@/media/KINGSTON/Ubuntu-guide.pdf^@
Bunun yardımcı olacağını umarım
En kullanışlı araç lsof şeklindedir. . Hangi dosyaların hangi işlemlerle kullanıldığını gösterir. % Co_de% bir bağlama noktasıysa (aygıt adı da çalışır), aşağıdaki komut, bu bağlama noktasında kullanılan tüm dosyaları gösterir:
lsof /media/KINGSTON
Bu komutu sıradan bir kullanıcı olarak çalıştırırsanız, yalnızca kendi işlemlerinizi gösterecektir. Tüm kullanıcıların işlemlerini görmek için /media/KINGSTON
çalıştırın.
sudo lsof /media/KINGSTON
'sindeki çıktı şuna benzer:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
zsh4 31421 gilles cwd DIR 8,1 4096 130498 /var/tmp
zsh4 31421 gilles txt REG 8,1 550804 821292 /bin/zsh4
zsh4 31421 gilles mem REG 8,1 55176 821326 /usr/lib/zsh/4.3.10/zsh/complist.so
zsh4 31421 gilles 12r REG 8,1 175224 822276 /usr/share/zsh/functions/Completion.zwc
lsof
sütunu, program yürütülebilir dosyasının adını gösterir ve COMMAND
sütunu işlem kimliğini gösterir. % Co_de% sütunu dosya adını gösterir; Dosya açıkken silinmişse PID
'yi görebilirsiniz (bir dosya silindiğinde, artık bir ismi yoktur, ancak bunu kullanan son işlem, dosyayı kapatıncaya kadar devam eder). NAME
kendiliğinden açıklayıcı olmalıdır. Diğer sütunlar, dosyanın işlem tarafından nasıl kullanıldığını gösteren (deleted)
dışında burada önemli değildir:
USER
: geçerli çalışma dizini FD
: program çalıştırılabilir² cwd
: bellek eşlemeli bir dosya (burada, açık dosya olarak düşünün) txt
ve yazma için mem
gibi açılış modunu gösterir.
Bir dosyanın açık olduğu pencereyi bulmak için mekanik bir yol yoktur (bu aslında teknik olarak anlamlı değildir: bir işlem birkaç pencereye sahipse, bir dosya özellikle bir pencere veya başka biriyle ilişkili değilse), hatta herhangi bir basit Bir sürecin penceresini belirleme yolu (ve tabii ki bir işlemin herhangi bir penceresinin olması gerekmez). Ancak genellikle komut adı ve dosya adı suçluyu bulmak ve dosyayı düzgün bir şekilde kapatmak için yeterlidir.
Dosyayı kapatamaz ve yalnızca tümünü sonlandırmak isterseniz, işlemi r
(burada w
işlem kimliği) veya kill 31421
(“asmak”) ile öldürebilirsiniz. Düz öldürme hile yapmazsa, aşırı önyargı ile öldürün: 31421
.
lsof için bir GUI var, glsof , ancak henüz prime time için henüz hazır değil ve Ubuntu için şimdiye kadar paketlenmiş.
¹
Lsof, diğer kullanıcıların işlemleriyle ilgili bazı bilgileri listeleyebilir, ancak bağlama noktasını algılamaz, böylece bir bağlama noktası belirtirseniz bunları listelemez.
²
Yürütülebilir kod, genellikle yürütülebilir biçimlerdeki tartışmalarda metin olarak adlandırılır.
Ayrıca bu yardımcı olabilir:
lsof | grep \/media\/KINGSTON
Bu arada, füzer komutu çok gelişti. Tam işi tek bir komutla yapabilirsiniz:
sudo fuser -ickv /"mountpoint"
Burada:
k
parametresi hatalı işlemi öldürüyor, v
, işlemi ve kullanıcısını önceden gösterirken i
, onayınızı ister. Bazı süreçler dirençliyse, en inatçı olanları öldüren fuser -ickv -9
(veya daha genel olarak -SIGNAL
ile) ile tekrar deneyin.
Ama her zaman "ölümsüz" bir süreç bulacaksın!
Etiketlerdeki diğer soruları oku umount