it-swarm-tr.com

"Lsof" komutu için alternatifler?

Birçok durumda, çalışmak zorunda olduğum makinelere "lsof" kurulu değildir, ancak lsof "fonksiyonu" na çok ihtiyaç duyulacaktır (örn. AIX'te). : \

Windows olmayan dünyada "lsof" benzeri uygulamalar var mı?

GÜNCELLEME: ex .: Hangi işlemlerin "/ home/username" dizinini kullandığını bilmem gerekir?

21
LanceBaynes

fuser , sisteminizde mevcut olup olmadığına bakın.

21
enzotib

nix Rosetta Stone bu tür sorular için iyi bir kaynaktır. lsof için birkaç alternatiften bahseder (aşağıya bakınız). Ancak, lsof'un yaptığı şey için fiili standart uygulama olduğunu unutmayın.

İstediğiniz tek şey belirli bir dosyayı açık olan işlem kimliklerini bulmaksa, POSIX uyumlu herhangi bir sistemde fuser kullanabilirsiniz.

/proc Dizinine sahip işletim sistemlerinde, /proc İçindeki bilgiler aracılığıyla bir işlemle açılmış dosyaları (lsof 'in en yaygın çalışma modunun tersi) sorgulayabilirsiniz. Bazı işletim sistemleri bunun için komutlara sahiptir:

Solaris'i çalıştırırsanız, varsayılan olarak yüklenmeyen ve ZFS'yi tıkayabilecek lsof yerine bir alternatif pfiles olur.

örneğin:

pfiles /proc/*

8
jlliagre

Benim sürümüm, sadece biraz daha az yardımcı programları ile:

for proc_pid in $(find /proc -maxdepth 1 -name "[0-9]*"); do \
    ls -l ${proc_pid}/fd 2>/dev/null \
    | grep -q "$search_term" \
    && echo "${proc_pid#/proc/}"; \
done

Kuşkusuz, tüm köşe vakalarını ele almayabilir, ancak kullanım durumumda çalışıyor.

2
Bryce Schober

Bu hile yapmalı. Aşağıdakiler dışındaki tüm dosya tanımlayıcı eşlemelerini verecektir:

  • görüntüleme izniniz yok veya
  • "İzin reddedildi" dizesini içeren dosyalar içindir
( find /proc -mindepth 1 -maxdepth 1 \
  | grep -E [0-9]+ | xargs -n 1 -I% find %/fd \
  | xargs ls -l \
  | grep -v "Permission denied" ) 2>/dev/null \
| cut -d' ' -f12- | less

Yalnızca belirli programların eşlemelerini önemsediğinizi zaten biliyorsanız, bunun yerine aşağıdaki satırlarda daha fazla bir şey kullanabilirsiniz:

exec=sshd
pgrep "$exec" | xargs -n 1 ps -p
pgrep "$exec" | xargs -n 1 -I% find /proc/%/fd | xargs ls -l | cut -d' ' -f12- | less
0
Parthian Shot