it-swarm.com.de

Anzeigen offener Dateideskriptoren ohne Verwendung des Befehls lsof

Hallo, ich habe gelesen hier , dass lsof kein genauer Weg ist, um die Anzahl der aktuell geöffneten Dateideskriptoren zu ermitteln. Er empfahl, stattdessen diesen Befehl zu verwenden

 cat /proc/sys/fs/file-nr

Während dieser Befehl die Anzahl der FDs anzeigt, wie können Sie die Liste der offenen Dateideskriptoren anzeigen, die der obige Befehl gerade gezählt hat?

48
dimas

Es gibt zwei Gründe, warum lsof | wc -l Dateideskriptoren nicht zählt. Zum einen werden Dinge aufgelistet, die keine geöffneten Dateien sind, z. B. geladene dynamisch verknüpfte Bibliotheken und aktuelle Arbeitsverzeichnisse. Sie müssen sie herausfiltern. Ein weiterer Grund ist, dass die Ausführung von lsof einige Zeit in Anspruch nimmt, sodass möglicherweise Dateien übersehen werden, die während der Ausführung geöffnet oder geschlossen werden. Daher ist die Anzahl der aufgelisteten geöffneten Dateien ungefähr. Wenn Sie /proc/sys/fs/file-nr Betrachten, erhalten Sie einen genauen Wert zu einem bestimmten Zeitpunkt.

cat /proc/sys/fs/file-nr Ist nur dann nützlich, wenn Sie die genaue Zahl benötigen, hauptsächlich um zu überprüfen, ob die Ressourcen erschöpft sind. Wenn Sie die geöffneten Dateien auflisten möchten, müssen Sie lsof aufrufen oder eine äquivalente Methode wie das manuelle Schleppen von /proc/*/fd Verwenden.

Prozessinformationen werden vom System dynamisch in Verzeichnissen unter/proc gespeichert. Beispielsweise hat der Prozess mit PID 1234 ein Verzeichnis mit dem Namen/proc/1234.

Es gibt eine Menge Informationen, aber im Moment interessieren Sie sich für das Unterverzeichnis/proc/1234/fd.

ANMERKUNG: Sie benötigen Root-Berechtigungen, um Dateien für Prozesse anzuzeigen oder zu öffnen, die Sie nicht besitzen, sowie für SetUID-Prozesse.

Beispiel:

[email protected]:/proc# ls -l 2443/fd
total 0
lr-x------ 1 johan johan 64 Feb 27 10:26 0 -> pipe:[13637]
l-wx------ 1 johan johan 64 Feb 27 10:26 1 -> /home/johan/.xsession-errors
lrwx------ 1 johan johan 64 Feb 27 10:26 10 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 11 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 12 -> socket:[39495]
lrwx------ 1 johan johan 64 Feb 27 10:26 13 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 14 -> anon_inode:inotify
lrwx------ 1 johan johan 64 Feb 27 10:26 15 -> anon_inode:[eventfd]
l-wx------ 1 johan johan 64 Feb 27 10:26 16 -> pipe:[37885]
lr-x------ 1 johan johan 64 Feb 27 10:26 17 -> pipe:[37886]
l-wx------ 1 johan johan 64 Feb 27 10:26 2 -> /home/johan/.xsession-errors
l-wx------ 1 johan johan 64 Feb 27 10:26 21 -> pipe:[167984]
lr-x------ 1 johan johan 64 Feb 27 10:26 22 -> pipe:[167985]
l-wx------ 1 johan johan 64 Feb 27 10:26 23 -> pipe:[170009]
lr-x------ 1 johan johan 64 Feb 27 10:26 24 -> pipe:[170010]
lrwx------ 1 johan johan 64 Feb 27 10:26 3 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 4 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 5 -> socket:[14721]
l-wx------ 1 johan johan 64 Feb 27 10:26 6 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 7 -> socket:[14730]
lrwx------ 1 johan johan 64 Feb 27 10:26 8 -> socket:[13984]
lrwx------ 1 johan johan 64 Feb 27 10:26 9 -> socket:[14767]

[email protected]:/proc# cat 2443/fdinfo/2
pos:    1244446
flags:  0102001

Schauen Sie sich auch den Rest der Dateien unter/proc an ... viele nützliche Informationen aus dem System befinden sich hier.

25
Johan