Hallo , ich habe hier , dass lsof ist nicht eine genaue Art und Weise, die Anzahl der Dateideskriptoren bekommen , die gerade geöffnet sind. 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 geöffneten Dateideskriptoren anzeigen, die der obige Befehl gerade gezählt hat?
linux
bash
command-line
dimas
quelle
quelle
Antworten:
Es gibt zwei Gründe, warum
lsof | wc -l
die Dateideskriptoren nicht berücksichtigt werden. Zum einen werden Dinge aufgelistet, die nicht geöffnet sind, z. B. geladene dynamisch verknüpfte Bibliotheken und aktuelle Arbeitsverzeichnisse. Sie müssen sie herausfiltern. Ein weiterer Grund ist, dasslsof
die Ausführung einige Zeit in Anspruch nimmt. Dadurch können Dateien übersehen werden, die während der Ausführung geöffnet oder geschlossen werden. daher ist die Anzahl der aufgelisteten offenen Dateien ungefähr. Betrachten/proc/sys/fs/file-nr
gibt Ihnen einen genauen Wert zu einem bestimmten Zeitpunkt.cat /proc/sys/fs/file-nr
Dies 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 einelsof
entsprechende Methode wie das/proc/*/fd
manuelle Trawlen aufrufen oder verwenden .quelle
/proc/*/fd
Verzeichnisse enthalten symbolische Links zu den geöffneten Dateien. Zur Sichtprüfung verwendenls -l
. Verwenden Siereadlink
zur automatischen Behandlung, um das Verknüpfungsziel zu extrahieren.setrlimit
(dem Systemaufruf, der demulimit
Shell-Befehl zugrunde liegt ) gelten pro Prozess. Sie wirken sich nur auf den Prozess aus, der den Aufruf ausführt (und indirekt auf die Prozesse, die er später aufgibt).Prozessinformationen werden vom System dynamisch in Verzeichnissen unter / proc gespeichert. Zum Beispiel hat der Prozess mit PID 1234 ein Verzeichnis mit dem Namen / proc / 1234.
Dort sind einige Informationen enthalten, aber Sie interessieren sich gerade für das Unterverzeichnis / proc / 1234 / fd .
ANMERKUNG: Sie benötigen Root-Berechtigungen zum Anzeigen oder Öffnen von Dateien für Prozesse, deren Eigentümer Sie nicht sind, sowie für SetUID-Prozesse.
Beispiel:
Schauen Sie sich auch die restlichen Dateien unter / proc an ... hier finden Sie viele nützliche Informationen aus dem System.
quelle