Jaka jest różnica między `lsof -p <pid> | wc -l` i `ls / proc / <pid> / fd | wc -l`?


13

Tło: bawię się monitorowaniem ulimit pod kątem uruchamiania procesów dla konkretnego użytkownika. (Od czasu do czasu widziałem procesy, które zaczynały się z niepoprawnym limitem.) Zapytałem kilku samozwańczych guru Linuksa, a jeden zasugerował lsof -p <pid>, podczas gdy drugi zasugerował ls /proc/<pid>/fd, ale żaden nie był pozytywny, co do którego dokładniej odzwierciedla faktyczne liczenie w kierunku maksimum limit otwartych plików dla procesu.

Więc co to jest?

lsof -p <pid> | wc -l

Lub

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

Proszę wyjaśnić różnicę. Dzięki!


3
Brzmi jak praca domowa.
ewwhite

1
Nie praca domowa. Dodano lepsze wyjaśnienie. Przeczytałem lsofstrony podręcznika i chociaż podejrzewałem, że odpowiedzią są pliki mapowane w pamięci, chciałem potwierdzenia osoby bardziej doświadczonej.
Jared

Odpowiedzi:


10

lsofda ci również pliki ISO mapowane na pamięć - co technicznie nie jest tym samym, co uchwyt pliku, nad którym aplikacja ma kontrolę. /proc/<pid>/fdjest punktem pomiarowym dla otwartych deskryptorów plików - jednak: wspomniany na stronie proc-man - jeśli główny wątek programu wielowątkowego zostanie zakończony, ten katalog będzie niedostępny.

lsof -p <pid> | grep -v mem | egrep -v '^COMMAND PID' | wc -lpokaże ci te same przedmioty, co ls /proc/<pid>/fd | wc -l.

Mapy pamięci są dostępne w /proc/<pid>/maps.


lsofDaje prawie taki sam wynik, ale również zawiera cwd, rtdi txtdeskryptory plików.
Ian Bamforth,

Należy również pamiętać, że liczba spacji między COMMANDi PIDmoże się różnić. Zamień spacje [[:space:]]*na bardziej ogólne.
Ian Bamforth,

Znalazłem również lsof -a -p <pid> -d ^mem -d ^cwd -d ^rtd -d ^txt -d ^DEL | wc -l tutaj , podczas gdy lsofw powłoce Androida ( adb shell) nie obsługuje -ai -d. Więc w końcu używam wersji Kvisle.
Weekend
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.