`Lsof -p <pid> | wc -l` ve `ls / proc / <pid> / fd | wc -l`?


13

Arka plan: Belirli bir kullanıcı için işlemleri çalıştırmak için ulimit'i izleyerek oynuyorum. (Bazen yanlış bir sınırla başlayan süreçler görmüştüm.) Bir çift kendi kendine yeten Linux gurusu sordum ve biri önerdi lsof -p <pid>, diğeri önerdi ls /proc/<pid>/fd, ancak ikisi de gerçek sayıyı maks. işlem için açık dosya sınırı.

Peki, hangisi?

lsof -p <pid> | wc -l

Veya

ls /proc/<pid>/fd | wc -l

Lütfen farkın üzerinde durun. Teşekkürler!


3
Ödev gibi geliyor.
ewwhite

1
Ödev değil. Daha iyi bir açıklama eklendi. lsofAdam sayfalarını okumuştum ve cevabın bellek eşlemeli dosyalar olduğundan şüphelenirken, daha deneyimli bir kişinin onayını istedim.
Jared

Yanıtlar:


10

lsofayrıca teknik olarak uygulamanın kontrol ettiği bir dosya tanıtıcısı ile aynı olmayan bellek eşlemeli .so dosyaları da verir. /proc/<pid>/fdaçık dosya tanımlayıcıları için ölçüm noktasıdır - ancak: proc-man sayfasında belirtilir - çok iş parçacıklı bir programın ana iş parçacığı sonlandıysa, bu dizin kullanılamaz.

lsof -p <pid> | grep -v mem | egrep -v '^COMMAND PID' | wc -lsize aynı öğeleri gösterecektir ls /proc/<pid>/fd | wc -l.

Bellek haritalar mevcuttur /proc/<pid>/maps.


lsofSize hemen hemen aynı çıktıyı verir, ama aynı zamanda içerir cwd, rtdve txtdosya tanımlayıcıları.
Ian Bamforth

Ayrıca COMMANDve arasındaki boşluk sayısının PIDdeğişebileceğini unutmayın. [[:space:]]*Daha genel yapmak için boşlukları değiştirin .
Ian Bamforth

Ben de lsof -a -p <pid> -d ^mem -d ^cwd -d ^rtd -d ^txt -d ^DEL | wc -l burada buldum , lsofAndroid kabuk ( adb shell) desteklemiyor -ave -d. Sonunda Kvisle'ın versiyonunu kullanıyorum.
Hafta Sonu
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.