Açık dosya tanımlayıcıları nasıl gösteriliyor ancak lsof komutu kullanılmıyor


48

Merhaba Ben okudum Burada lsof şu anda açık olan Dosya Tanımlayıcılarının sayısını almanın doğru bir yolu değil. Bunun yerine bu komutu kullanması önerildi.

 cat /proc/sys/fs/file-nr

Bu komut FD sayısını gösterirken, yukarıdaki komutun saydığı açık dosya tanımlayıcılarının listesini nasıl görüntülersiniz?


4
Muhtemelen ulimitinin aşılıp aşılmadığını bilmek istersin, değil mi? Bu konuda linuxintro.org/wiki/Is_my_ulimit_exceeded ; en önemlisi, ulimit, / proc / PID / limitleri altında bulabileceğiniz bir işlem başına kısıtlamadır ve lsof yerine ls / proc / PID / fd işlemini sürecin dosya tanımlayıcılarını listelemek için kullanırdım.
Thorsten Staerk

Yanıtlar:


60

lsof | wc -lDosya tanımlayıcıları saymamasının iki nedeni vardır . Birincisi, dinamik olarak yüklenmiş kütüphaneler ve mevcut çalışma dizinleri gibi açık dosyalar olmayan şeyleri listelemesi; Onları filtrelemelisin. Bir diğeri ise lsofçalışması biraz zaman alır, bu nedenle çalışırken açılıp kapatılan dosyaları kaçırabilir; bu nedenle listelenen açık dosyaların sayısı yaklaşıktır. Bakmak /proc/sys/fs/file-nrsize zamanla belirli bir noktada kesin bir değer verir.

cat /proc/sys/fs/file-nrSadece kesin rakam gerektiğinde, özellikle de kaynakların tükenip bitmediğini kontrol etmek için kullanışlıdır. Açık dosyaları listelemek istiyorsanız, aramanız lsofveya /proc/*/fdel ile trol yapma gibi eşdeğer bir yöntem kullanmanız gerekir.


1
Merhaba, iyi bir açıklama verdiğiniz için teşekkür ederiz Gilles. Ls / proc / * / fd'yi denedim ve o zaman bütün açık fd'leri aldım. Bazı renk kodlaması ile bir çıktı üretiyor, sadece kılavuza bakmam gerekecek.
dimas

@ dimas /proc/*/fddizinleri açık dosyalara sembolik bağlantılar içerir. Görsel inceleme için kullanın ls -l. Otomatik işlem readlinkiçin, bağlantı hedefini çıkarmak için kullanın.
Gilles 'SO- kötülük yapmayı bırak'

Sadece ls -l kullanın, ancak ben readlink ile deney yapacağım. Diğer / proc / PID / haritaları ve burada belirtilen diğer seçenekleri denedim kernel.org/doc/man-pages/online/pages/man5/proc.5.html . Ek bilgi için tekrar teşekkürler.
dimas

1
/ proc / sys / fs / dosya nr, bana 3872 (ve diğer iki sayı) verir. Ulimit -n bana 1024 gösteriyorsa, bu açmış olduğum dosya sayısı nasıl olabilir?
Thorsten Staerk

1
@ThorstenStaerk Tüm ayarlar setrlimit( ulimitshell komutunun altındaki sistem çağrısı ) işlem başınadır. Yalnızca aramayı yapan süreci etkiler (ve dolaylı olarak daha sonra yaptığı süreçleri).
Gilles 'SO- kötülük'

25

Proses bilgileri, sistem tarafından dinamik olarak / proc altındaki dizinlerde tutulur. Örneğin, PID 1234 ile işlem / proc / 1234 adında bir dizine sahip olacaktır.

İçeride epeyce bilgi var ama şu anda / proc / 1234 / fd alt diziniyle ilgileniyorsunuz .

NOT: Sahibi olmadığınız işlemler için ve ayrıca SetUID işlemleri için dosyaları görüntülemek veya açmak için kök izinlerinizin olması gerekir.

Örnek:

root@johan-HP-ProBook-6560b-LG654EA-ACQ:/proc# ls -l 2443/fd
total 0
lr-x------ 1 johan johan 64 Feb 27 10:26 0 -> pipe:[13637]
l-wx------ 1 johan johan 64 Feb 27 10:26 1 -> /home/johan/.xsession-errors
lrwx------ 1 johan johan 64 Feb 27 10:26 10 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 11 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 12 -> socket:[39495]
lrwx------ 1 johan johan 64 Feb 27 10:26 13 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 14 -> anon_inode:inotify
lrwx------ 1 johan johan 64 Feb 27 10:26 15 -> anon_inode:[eventfd]
l-wx------ 1 johan johan 64 Feb 27 10:26 16 -> pipe:[37885]
lr-x------ 1 johan johan 64 Feb 27 10:26 17 -> pipe:[37886]
l-wx------ 1 johan johan 64 Feb 27 10:26 2 -> /home/johan/.xsession-errors
l-wx------ 1 johan johan 64 Feb 27 10:26 21 -> pipe:[167984]
lr-x------ 1 johan johan 64 Feb 27 10:26 22 -> pipe:[167985]
l-wx------ 1 johan johan 64 Feb 27 10:26 23 -> pipe:[170009]
lr-x------ 1 johan johan 64 Feb 27 10:26 24 -> pipe:[170010]
lrwx------ 1 johan johan 64 Feb 27 10:26 3 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 4 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 5 -> socket:[14721]
l-wx------ 1 johan johan 64 Feb 27 10:26 6 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 7 -> socket:[14730]
lrwx------ 1 johan johan 64 Feb 27 10:26 8 -> socket:[13984]
lrwx------ 1 johan johan 64 Feb 27 10:26 9 -> socket:[14767]

root@johan-HP:/proc# cat 2443/fdinfo/2
pos:    1244446
flags:  0102001

Ayrıca / proc altındaki dosyaların geri kalanına bir göz atın ... sistemden burada pek çok yararlı bilgi var.

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.