Was ist der Unterschied zwischen lsof -p <pid> | wc -l` und `ls / proc / <pid> / fd | wc -l`?

12

Hintergrund: Ich spiele mit dem Überwachen des ulimit, um Prozesse für einen bestimmten Benutzer auszuführen. (Ich hatte gelegentlich Prozesse gesehen, die mit einem falschen Limit begannen.) Ich fragte ein paar selbsternannte Linux-Gurus, und einer schlug vor lsof -p <pid>, während der andere vorschlug ls /proc/<pid>/fd, aber keiner war positiv, was die tatsächliche Anzahl gegenüber dem Maximum genauer widerspiegelte Offenes Dateilimit für einen Prozess.

Also, was ist das?

lsof -p <pid> | wc -l

Oder

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

Bitte erläutern Sie den Unterschied. Vielen Dank!

Jared
quelle
3
Klingt nach Hausaufgaben.
ewwhite
1
Keine Hausaufgaben. Bessere Erklärung hinzugefügt. Ich hatte die lsofManpages gelesen , und obwohl ich vermutete, dass es sich bei der Antwort um Speicherdateien handelte, wollte ich die Bestätigung einer erfahreneren Person.
Jared

Antworten:

10

lsofAußerdem erhalten Sie speicherabgebildete .so-Dateien - was technisch nicht mit einem Dateihandle identisch ist, über das die Anwendung die Kontrolle hat. /proc/<pid>/fdist der Messpunkt für offene Dateideskriptoren - allerdings: Erwähnt in der proc-man-Seite - wenn der Hauptthread eines Multithread-Programms beendet wurde, ist dieses Verzeichnis nicht verfügbar.

lsof -p <pid> | grep -v mem | egrep -v '^COMMAND PID' | wc -lzeigt Ihnen die gleichen Gegenstände wie ls /proc/<pid>/fd | wc -l.

Die Speicherkarten sind in verfügbar /proc/<pid>/maps.

Kvisle
quelle
Das lsofgibt Ihnen fast die gleiche Leistung, aber es beinhaltet auch cwd, rtdund txtDatei - Deskriptoren.
Ian Bamforth
Beachten Sie auch, dass die Anzahl der Leerzeichen zwischen COMMANDund PIDvariieren kann. Ersetzen Sie die Leerzeichen durch [[:space:]]*, um sie allgemeiner zu gestalten.
Ian Bamforth
Ich fand auch lsof -a -p <pid> -d ^mem -d ^cwd -d ^rtd -d ^txt -d ^DEL | wc -l hier , während die lsofin Android - Shell ( adb shell) nicht unterstützt -aund -d. Also benutze ich endlich Kvisles Version.
Wochenende