Linux'ta hangi işlemin dosya kullandığını nasıl öğrenebilirim?


92

Kullanarak Linux'ta bir dosyayı kaldırmayı denedim rm -rf file_name, ancak şu hatayı aldım:

rm: file_name not removed.  Text file busy

Bu dosyayı hangi işlemin kullandığını nasıl öğrenebilirim?

Yanıtlar:


137

Aşağıdaki fusergibi komutu kullanabilirsiniz :

fuser file_name

Dosyayı kullanan işlemlerin bir listesini alacaksınız.

Daha detaylı bir çıktı almak için farklı bayraklar kullanabilirsiniz.

Kaynaştırıcının Wikipedia makalesinde veya mansayfalarda daha fazla bilgi bulabilirsiniz .


Bunu denedim: fuser -i / home / bin / lib. Isıtıcıyı: Ama bu got yasadışı seçeneği - i / home / bin / lib: 27674t
khris

1
@khris, tüm fuseruygulamalar aynı olmayabilir veya aynı şekilde çalışmayabilir. -iPOSIX'te tanımlanmış olsa bile , kullandığınız belirli uygulama, Wikipedia makalesinde açıklananlarla aynı seçeneklere sahip olmayabilir. Örneğin, şu anda AIX kullanıyorum ve fuserbu sistemde mevcut -iolanın da seçeneği yok.
jimm-cl

Nedense, ne benim için sanal kutu konuğu üzerinde çalışmıyorlardı ne fuserde lsof. Bu cevap beni kurtardı.
kael

34

@ jim'in cevabı doğru - fuseristediğiniz şey bu.

Ek olarak (veya alternatif olarak), işlemi sonlandırmak lsofiçin izne ihtiyaç duymanız durumunda (ek bir komut çalıştırmanıza gerek kalmadan) kullanıcı adı dahil daha fazla bilgi almak için kullanabilirsiniz . (Tabii ki, işlemi öldürmek istediğiniz şeyse, fuserbunu -kseçeneğiyle yapabilirsiniz. Seçenekle fuserdiğer sinyalleri de kullanabilirsiniz -s- ayrıntılar için man sayfasına bakın.)

Örneğin, tail -F /etc/passwdbir pencerede çalışan bir pencerede:

ghoti@pc:~$ lsof | grep passwd
tail      12470    ghoti    3r      REG  251,0     2037 51515911 /etc/passwd

lsofHangi işlemlerin belirli soketleri kullandığını bulmak için de kullanabileceğinizi unutmayın . Cephaneliğinizde bulundurmak için mükemmel bir araç.


PID hangi alandır?
nmz787

@ nmz787 - lsof | head -1tüm başlıkları görmek için.
ghoti

@ nmz787 İkinci alan PID'dir.
Tezgahı

lsof | grep -E "PID|<your_process_name>"hem 1. satırı hem de sorgulamak istediğiniz işlemi gösterir.
Robin Hsu

0
$ lsof | tree MyFold

Ekteki resimde gösterildiği gibi:

görüntü açıklamasını buraya girin


1
Bu nasıl çalışıyor? treeStdin'den bir şey okuyor mu ? Cevabınız evet ise, bu girişle ne yapıyor?
dyp

man lsof - lsof komutu için el kitabını görüntüler, lsof - açık dosyaları listeler, standart çıktı dosyasında işlemler tarafından açılan dosyalar hakkındaki bilgileri listeler ve sonuç bir ağaç yapısında görülebilir. lsof'un ne olduğunu açıkça kontrol etmelisiniz
Blunt Notion

Benim sorum treebununla ilgili değil lsof. Bildiğim kadarıyla anladığım kadarıyla, treebu nedenle çıkış, standart girişten okumuyor lsofedilir atılır çalıştırdığınızda lsof | tree .... Bu doğruysa, yalnızca içeriği görüntüleyen ancak bazı işlemlerle hangi dosyaların açıldığını göstermeyen ile lsof | tree MyFoldaynıdır tree MyFold.
dyp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.