W wielu przypadkach „lsof” nie jest instalowany na komputerach, z którymi muszę pracować, ale „funkcja” lsof byłaby bardzo potrzebna (np. W systemie AIX). : \
Czy są jakieś aplikacje typu „lsof” w świecie innym niż Windows?
AKTUALIZACJA: np .: muszę wiedzieć, że jakie procesy wykorzystują katalog „/ home / username”?
process
open-files
administration
lsof
LanceBaynes
źródło
źródło
Odpowiedzi:
Wiem o tym
fuser
, czy jest dostępny w twoim systemie.źródło
sudo fuser -vm / 2>&1 | awk '$3 ~ /f|F/' | less
może wyświetlać wszystkie procesy z otwartymi plikami w zamontowanym systemie plików/
. Aby uzyskać konkretną pomoc, zobacz stronę podręcznika man.sudo fuser -vm / 2>&1 | awk '$3 ~ /f|F/' | while read user pid flags rest; do printf '%10s %10s %10s %s\n' $user $pid $flags "$(</proc/$pid/cmdline)"; done | less
Unix Rosetta Stone jest dobrym źródłem dla tego rodzaju pytania. Wymienia kilka alternatyw dla lsof (patrz poniżej). Zauważ jednak, że lsof jest de facto standardową aplikacją do tego, co robi.
Jeśli wszystko, czego potrzebujesz, to znaleźć identyfikatory procesów, które mają otwarty konkretny plik, możesz użyć go
fuser
w dowolnym systemie zgodnym z POSIX.W systemach operacyjnych z
/proc
katalogiem można wyszukiwać pliki otwierane przez proces (odwrotność odlsof
najpopularniejszego trybu działania) poprzez informacje w/proc
. Niektóre systemy operacyjne mają do tego polecenia:procfiles
jest dostarczany z systemem (od AIX 5.2). Zobacz także aktualizację i wydajność narzędzi wydajności AIX 5.2 oraz przykłady poleceń lsof, pfiles, procfiles .pfiles
(istnieje od wersji 2.5 ).źródło
Jeśli zdarzy ci się uruchomić Solaris, alternatywą dla
lsof
, która nie jest instalowana domyślnie i może się zadławić w ZFS, jestpfiles
.na przykład:
pfiles /proc/*
źródło
Moja wersja z tylko trochę mniej narzędziami:
Trzeba przyznać, że może nie obsługiwać wszystkich skrzynek narożnych, ale działa w moim przypadku użycia.
źródło
To powinno załatwić sprawę. Daje wszystkie mapowania deskryptorów plików oprócz tych, które:
Jeśli już wiesz, że zależy Ci tylko na mapowaniu niektórych programów, możesz zamiast tego użyć czegoś więcej w następujący sposób:
źródło
Czasami
lsof
jest instalowany w/usr/sbin
Jeśli
/usr/sbin
nie jest częścią twojego$PATH
, możesz przegapić nawet zainstalowane polecenie.Sprawdź to za pomocą
źródło