it-swarm-eu.dev

Alternativy pro příkaz „lsof“?

V mnoha případech není „lsof“ nainstalován na počítačích, které musím pracovat, ale „funkce“ lsof by byla velmi potřebná (např. Na AIX). : \

Existují nějaké „lsof“ aplikace jako ve světě bez oken?

UPDATE: pro např .: Potřebuji vědět, že jaké procesy používají adresář "/ home/username"?

21
LanceBaynes

Vím o fuser , zjistěte, zda je ve vašem systému k dispozici.

21
enzotib

nix Rosetta Stone je dobrým zdrojem pro tento druh otázek. Uvádí několik alternativ pro lsof (viz níže). Všimněte si však, že lsof je de facto standardní aplikace pro to, co dělá.

Pokud chcete najít pouze ID procesů, které mají otevřený konkrétní soubor, můžete použít fuser v kterémkoli systému kompatibilním s POSIX.

Na operačních systémech s /proc adresář, můžete dotazovat soubory otevřené procesem (obráceně z nejběžnějšího provozního režimu lsof) prostřednictvím informací v /proc. Některé operační systémy mají k tomu příkazy:

Pokud náhodou spustíte Solaris, je alternativou k lsof, která není ve výchozím nastavení nainstalována a může se na ZFS dusit, je pfiles.

např:

pfiles /proc/*

8
jlliagre

Moje verze, s jen o něco méně spuštěnými nástroji:

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

Je pravda, že se nemusí zabývat všemi rohovými případy, ale pracuje v mém případu použití.

2
Bryce Schober

To by mělo udělat trik. Poskytne všechna mapování deskriptorů souborů s výjimkou těch, která:

  • nemáte oprávnění k prohlížení, nebo
  • jsou pro soubory, které obsahují řetězec „Odepření oprávnění“
( 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

Pokud již víte, že se staráte pouze o mapování pro určité programy, můžete místo toho použít něco více v souladu s:

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