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.