Handbücher für die Kommandozeile

Man » lsof-Handbuch online - detaillierte Online-Dokumentation für die lsof-Manpage

🌍
lsof - listet geöffnete Dateien auf

SYNOPSIS

lsof [ -?abChHlnNOPQRtUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-e s ] [ +|-E ]
[  +|-f  [cfgGn]  ]  [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k ] [ -K k ] [ +|-L [l] ] [ +|-m m ] [
+|-M ] [ -o [o] ] [ -p s ] [ +|-r [t[m<fmt>]] ] [ -s [p:s] ] [ -S [t] ] [ -T [t] ] [  -u  s  ]  [
+|-w ] [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]

DESCRIPTION

Lsof Revision 4.99.4 listet auf seiner Standardausgabe Dateiinformationen über von Prozessen geöffnete Dateien für die folgenden UNIX-Dialekte auf:

Apple Darwin 9, Mac OS X 10, macOS 11 und höher
FreeBSD 8.2 und höher
Linux 2.1.72 und höher
NetBSD 1.2 und höher
OpenBSD 7.2 und höher
Solaris 9, 10 und 11 und höher
OpenIndiana 5.11 und höher

(Informationen zur Beschaffung der neuesten lsof-Revision finden Sie im Abschnitt DISTRIBUTION dieser Manpage.)

Eine geöffnete Datei kann eine reguläre Datei, ein Verzeichnis, eine Block-Spezialdatei, eine Zeichen-Spezialdatei, eine ausgeführte Textreferenz, eine Bibliothek, ein Stream oder eine Netzwerkdatei (Internet-Socket, NFS-Datei oder UNIX-Domänen-Socket) sein. Eine bestimmte Datei oder alle Dateien in einem Dateisystem können über ihren Pfad ausgewählt werden.

Anstelle einer formatierten Anzeige erzeugt lsof eine Ausgabe, die von anderen Programmen analysiert werden kann. Siehe die Option -F, die Beschreibung und den Abschnitt "AUSGABE FÜR ANDERE PROGRAMME" für weitere Informationen.

Zusätzlich zur Erstellung einer einzelnen Ausgabeliste führt lsof in einem sich wiederholenden Modus aus. In diesem Modus erzeugt es eine Ausgabe, verzögert und wiederholt den Ausgabevorgang, bis es durch ein Interrupt- oder Quitsignal gestoppt wird. Siehe die Beschreibung der Option +|-r [t[m<fmt>]] für weitere Informationen.

OPTIONEN

In Ermangelung von Optionen listet lsof alle offenen Dateien auf, die allen aktiven Prozessen gehören.

Wenn eine der Listenauswahloptionen angegeben ist, müssen andere Listenauswahloptionen explizit angefordert werden, z. B. wenn -U zur Auflistung von UNIX-Socket-Dateien angegeben wird, werden NFS-Dateien nicht aufgelistet, es sei denn, -N wird ebenfalls angegeben; oder wenn eine Benutzerliste mit der Option -u angegeben wird, werden UNIX-Domänen-Socket-Dateien, die Prozessen gehören, die nicht in der Liste enthalten sind, nicht aufgelistet, es sei denn, die Option -U wird ebenfalls angegeben.

Normalerweise werden Listenauswahloptionen, die explizit angegeben werden, mit ODER verknüpft, d. h., wenn die Option -i ohne Adresse und die Option -ufoo angegeben werden, wird eine Liste aller Netzwerkdateien ODER der Dateien erstellt, die Prozessen gehören, die dem Benutzer "foo" gehören. Die Ausnahmen sind:

1 der mit `^` (negierte) Login-Name oder die Benutzer-ID (UID), die mit der Option -u angegeben wird;

2 die mit `^` (negierte) Prozess-ID (PID), die mit der Option -p angegeben wird;

3 die mit `^` (negierte) Prozessgruppen-ID (PGID), die mit der Option -g angegeben wird.

4 das `^`-Zeichen (negierte Option), das mit der Option -c angegeben wird;

5 die (`^`) negierten TCP- oder UDP-Protokollstatusnamen, die mit der Option -s [p:s] angegeben werden.

Da diese Ausschlusskriterien darstellen, werden sie ohne ODER- oder UND-Verknüpfung angewendet und haben Vorrang, bevor andere Auswahlkriterien angewendet werden.

Die Option -a kann verwendet werden, um die Auswahlen per UND zu verknüpfen. Zum Beispiel erzeugt die Angabe von -a, -U und -ufoo eine Liste, die nur UNIX-Socket-Dateien enthält, die zu Prozessen gehören, die dem Benutzer `foo` gehören.

Achtung: Die Option -a bewirkt, dass alle Listenauswahloptionen per UND verknüpft werden; sie kann nicht verwendet werden, um
die UND-Verknüpfung ausgewählter Paare von Auswahloptionen durch die Platzierung zwischen ihnen zu bewirken, obwohl eine solche Platzierung zulässig wäre. Wo immer -a platziert wird, bewirkt es die UND-Verknüpfung aller Auswahloptionen.

Elemente desselben Auswahlsatzes – Befehlsnamen, Datei-Deskriptoren, Netzwerkadressen, Prozess-IDs, Benutzer-IDs, Zonenamen, Sicherheitskontexte – werden in einem einzelnen per ODER verknüpften Satz zusammengefasst und angewendet, bevor das Ergebnis an der UND-Verknüpfung teilnimmt. Zum Beispiel führt die Angabe von -, -, -a und -ufff,ggg dazu, dass die Liste der Dateien ausgewählt wird, die entweder zu den Login-Namen fff'' ODERggg'' gehören UND Netzwerkverbindungen zu entweder Host aaa.bbb ODER ccc.ddd haben.

Optionen können nach einem einzelnen Präfix gruppiert werden – z. B. kann die Optionsgruppe -a -b -C'' als -abC angegeben werden. Da jedoch Werte optional nach +|-f, -F, -g, -i, +|-L, -o, +|-r, -s, -S, -T, -x und -z folgen, ist Vorsicht geboten, wenn Sie keine Werte für diese haben, da das folgende Zeichen mehrdeutig sein könnte. Zum Beispiel könnte -Fn die Optionen -F und -n darstellen oder das Zeichen für die Feld-ID „n“ darstellen, das der Option -F folgt. Wenn eine Mehrdeutigkeit besteht, beginnen Sie mit einem neuen Zeichen mit einem `-' – z. B.-F -n''. Wenn die nächste Option ein Dateiname ist, fügen Sie der möglicherweise mehrdeutigen Option --'' hinzu – z. B.-F -- name''.

Entweder das Präfix +' oder-' kann auf eine Gruppe von Optionen angewendet werden. Optionen, die keine unterschiedlichen Bedeutungen für jedes Präfix annehmen – z. B. -i – können unter einem der Präfixe gruppiert werden. Daher kann zum Beispiel +M -i'' als+Mi'' angegeben werden, und die Gruppe hat die gleiche Bedeutung wie die einzelnen Optionen. Seien Sie vorsichtig bei der Präfixgruppierung, wenn eine oder mehrere Optionen in der Gruppe unterschiedliche Bedeutungen unter verschiedenen Präfixen annehmen – z. B. +|-M; -iM'' ist nicht die gleiche Anforderung wie-i +M''. Im Zweifelsfall verwenden Sie einzelne Optionen mit den entsprechenden Präfixen.

-? -h Diese beiden äquivalenten Optionen wählen eine Hilfeliste für die Ausgabe aus. Lsof zeigt eine abgekürzte Form dieser Ausgabe an, wenn es einen Fehler in den angegebenen Optionen erkennt, nachdem
es Meldungen angezeigt hat, die jeden Fehler erläutern. (Escapen Sie das `?`-Zeichen, wie es Ihr
Shell erfordert.)

-a bewirkt, dass die Listenauswahloptionen per UND verknüpft werden, wie oben beschrieben.

-A A ist auf Systemen verfügbar, die für AFS konfiguriert sind, deren AFS-Kernelcode über dynamische Module implementiert wird. Es ermöglicht dem Benutzer von lsof, A als alternative Namensdateiliste anzugeben,
in der die Kerneladressen der dynamischen Module gefunden werden können. Weitere Informationen zu dynamischen Modulen, ihren Symbolen und deren Auswirkungen auf lsof finden Sie in den Lsof-FAQs (der FAQ-Bereich gibt seinen Speicherort an).

-b verursacht, dass lsof Kernel-Funktionen vermeidet, die blockieren könnten - lstat(2), [readlink]({filename}../../readlink)(2) und

stat(2).

Siehe die Abschnitte „BLOCKS AND TIMEOUTS“ und „AVOIDING KERNEL BLOCKS“ für Informationen zur Verwendung dieser Option.

-c c wählt die Auflistung von Dateien für Prozesse aus, die den Befehl ausführen, der mit den
Zeichen von c beginnt. Mehrere Befehle können mit mehreren -c-Optionen angegeben werden.
Sie werden in einem einzigen ODER-Satz zusammengefasst, bevor sie an der UND-Optionsauswahl teilnehmen.

Wenn c mit einem ^ beginnt, geben die folgenden Zeichen einen Befehlsnamen an, dessen Prozesse ignoriert (ausgeschlossen) werden sollen.

Wenn c mit einem Schrägstrich ('/') beginnt und endet, werden die Zeichen zwischen den Schrägstrichen als regulärer Ausdruck interpretiert. Shell-Metazeichen im regulären Ausdruck müssen davor geschützt werden, damit sie nicht von der Shell interpretiert werden. Der schließende Schrägstrich kann von diesen Modifikatoren gefolgt werden:

b der reguläre Ausdruck ist ein einfacher.
i ignoriert die Groß-/Kleinschreibung von Buchstaben.
x der reguläre Ausdruck ist ein erweiterter.
(Standard)

Weitere Informationen zu einfachen und erweiterten regulären Ausdrücken finden Sie in den lsof-FAQs (Der FAQ-Bereich gibt seinen Speicherort an).

Die einfache Befehlsangabe wird zuerst getestet. Wenn dieser Test fehlschlägt, wird der reguläre Befehlsausdruck angewendet. Wenn der einfache Befehlstest erfolgreich ist, wird der Befehlsregulärausdruckstest nicht durchgeführt. Dies kann dazu führen, dass die Meldung „kein Befehl für den regulären Ausdruck gefunden“ ausgegeben wird, wenn die -V-Option von lsof angegeben wird.

+c w definiert die maximale Anzahl von Anfangszeichen des Namens, der vom UNIX-Dialekt des mit einem Prozess verbundenen UNIX-Befehls geliefert wird, der in der Spalte BEFEHL ausgegeben wird. (Der Standardwert von lsof ist neun.)

Beachten Sie, dass viele UNIX-Dialekte nicht alle Befehlsnamenzeichen an lsof in den Dateien und Strukturen liefern, aus denen lsof den Befehlsnamen bezieht. Oft beschränken Dialekte die Anzahl der Zeichen, die in diesen Quellen geliefert werden. Zum Beispiel beschränken Linux 2.4.27 und Solaris 9 die Länge des Befehlsnamens auf 16 Zeichen.

Wenn w null ('0') ist, werden alle Befehlszeichen, die dem lsof vom UNIX-Dialekt geliefert werden, ausgegeben.

Wenn w kleiner als die Länge des Spaltentitels „BEFEHL“ ist, wird er auf diese Länge erhöht.

-C deaktiviert die Meldung von Pfadnamenkomponenten aus dem Namen-Cache des Kernels. Siehe
den Abschnitt „KERNEL NAME CACHE“ für weitere Informationen.

+d s veranlasst lsof, nach allen offenen Instanzen des Verzeichnisses s und den darin enthaltenen Dateien und Verzeichnissen in seiner obersten Ebene zu suchen. +d durchsucht NICHT den Verzeichnisbaum, der bei s beginnt.

Die Option +D D kann verwendet werden, um eine vollständige, absteigende Verzeichnistreuchersuchung mit dem Stammverzeichnis D anzufordern.

Die Verarbeitung der Option +d folgt symbolischen Links innerhalb von s nicht, es sei denn, die Option -x oder -x l wird ebenfalls angegeben. Ebenso werden keine offenen Dateien an Mountpunkten des Dateisystems in Unterverzeichnissen von s durchsucht, es sei denn, die Option -x oder -x f wird ebenfalls angegeben.

Hinweis: Die Berechtigung des Benutzers, der diese Option verwendet, beschränkt die Suche auf Dateien, die der Benutzer mit der Systemfunktion stat(2) untersuchen darf.

-d s gibt eine Liste von Dateideskriptoren (FDs) an, die von der Ausgabe ausgeschlossen oder einbezogen werden sollen. Die Dateideskriptoren werden in der durch Kommas getrennten Menge s angegeben, z. B. „cwd,1,3“, „^6,^2“. (Es dürfen keine Leerzeichen in der Menge enthalten sein.)

Die Liste ist eine Ausschlussliste, wenn alle Einträge der Menge mit ^ beginnen. Sie ist eine Einbeziehungsliste, wenn kein Eintrag mit ^ beginnt. Gemischte Listen sind nicht zulässig.

Ein Bereich von Dateideskriptor-Nummern kann in der Menge enthalten sein, solange weder das erste noch das zweite Element leer ist, beide Elemente Zahlen sind und das zweite Element größer als das erste ist, z. B. „0-7“ oder „3-10“. Bereiche können für den Ausschluss angegeben werden, wenn sie das Präfix ^ haben, z. B. „^0-7“, wodurch alle Dateideskriptoren von 0 bis 7 ausgeschlossen werden.

Mehrere Dateideskriptor-Nummern werden in einer einzigen OR-verknüpften Menge zusammengefasst, bevor sie an der AND-Optionauswahl teilnehmen.

Wenn die Menge sowohl Ausschluss- als auch Einbeziehungselemente enthält, meldet lsof diese als Fehler und beendet das Programm mit einem Nicht-Null-Rückgabecode.

Weitere Informationen zu Dateideskriptor-Namen finden Sie im Abschnitt AUSGABE unter der Beschreibung der Werte für Dateideskriptoren (FD).

fd ist ein Pseudo-Dateideskriptor-Name, mit dem der gesamte Bereich möglicher Dateideskriptor-Nummern angegeben wird. fd wird nicht in der Spalte FD der Ausgabe angezeigt.

+D D bewirkt, dass lsof nach allen offenen Instanzen des Verzeichnisses D und allen darin enthaltenen Dateien und Verzeichnissen bis in die volle Tiefe sucht.

Die Verarbeitung der Option +D folgt symbolischen Links innerhalb von D nicht, es sei denn, die Option -x oder -x l wird ebenfalls angegeben. Ebenso werden keine offenen Dateien an Mountpunkten des Dateisystems in Unterverzeichnissen von D durchsucht, es sei denn, die Option -x oder -x f wird ebenfalls angegeben.

Hinweis: Die Berechtigung des Benutzers, der diese Option verwendet, beschränkt die Suche auf Dateien, die der Benutzer mit der Systemfunktion stat(2) untersuchen darf.

Zusätzlicher Hinweis: lsof kann diese Option langsam verarbeiten und eine große Menge an dynamischem Speicher dafür benötigen. Dies liegt daran, dass es den gesamten Verzeichnisbaum, der an D verwurzelt ist, durchlaufen muss, die Systemfunktion stat(2) für jede Datei und jedes Verzeichnis aufrufen muss, eine Liste aller gefundenen Dateien erstellen und diese Liste mit jeder offenen Datei vergleichen muss. Wenn das Verzeichnis D groß ist, können diese Schritte lange dauern. Verwenden Sie diese Option daher mit Bedacht.

-D D weist lsof an, die Gerätecachedatei zu verwenden. Die Verwendung dieser Option kann manchmal eingeschränkt sein. Weitere Informationen finden Sie im Abschnitt GERÄTE-CACHE-DATEI und in den folgenden Abschnitten.

-D muss von einem Funktionsbuchstaben gefolgt werden; der Funktionsbuchstabe kann optional von einem Pfadnamen gefolgt werden. Lsof erkennt die folgenden Funktionsbuchstaben:

? - Pfade zur Geräte-Cache-Datei melden
b - Die Geräte-Cache-Datei erstellen
i - Die Geräte-Cache-Datei ignorieren
r - Die Geräte-Cache-Datei lesen
u - Die Geräte-Cache-Datei lesen und aktualisieren

Die Funktionen b, r und u, zusammen mit einem Pfadnamen, können manchmal eingeschränkt sein. Wenn diese Funktionen eingeschränkt sind, werden sie nicht in der Beschreibung der -D-Option angezeigt, die mit der -h- oder -?-Option ausgegeben wird. Siehe den Abschnitt "GERÄTE-CACHE-DATEI" und die folgenden Abschnitte für weitere Informationen zu diesen Funktionen und wann sie eingeschränkt sind.

Die Funktion ? meldet die schreibgeschützten und schreibbaren Pfade, die lsof für die Geräte-Cache-Datei verwenden kann, die Namen aller Umgebungsvariablen, deren Werte lsof beim Erstellen des Pfads zur Geräte-Cache-Datei untersucht, und das Format für den Pfad zur persönlichen Geräte-Cache-Datei. (Maskieren Sie das Zeichen ?, wie es Ihr Shell erfordert.)

Wenn verfügbar, können den Funktionen b, r und u der Pfad zur Geräte-Cache-Datei folgen. Der Standard ist .lsof_hostname im Home-Verzeichnis der realen Benutzer-ID, die lsof ausführt, aber dies kann geändert worden sein, als lsof konfiguriert und kompiliert wurde. (Die Ausgabe der Optionen -h und -? zeigt das aktuelle Standardpräfix an, z. B. .lsof.) Das Suffix „hostname“ ist die erste Komponente des Hostnamens, der von gethostname(2) zurückgegeben wird.

Wenn verfügbar, weist die Funktion b lsof an, eine neue Geräte-Cache-Datei am Standard- oder angegebenen Pfad zu erstellen.

Die Funktion i weist lsof an, die Standard-Geräte-Cache-Datei zu ignorieren und ihre Informationen über Geräte durch direkte Aufrufe des Kernels abzurufen.

Die Funktion r weist lsof an, die Geräte-Cache-Datei am Standard- oder angegebenen Pfad zu lesen, verhindert aber, dass eine neue Geräte-Cache-Datei erstellt wird, wenn keine vorhanden ist oder die vorhandene Datei eine fehlerhafte Struktur aufweist. Die Funktion r, wenn sie ohne Pfadnamen angegeben wird, verhindert, dass lsof eine fehlerhafte oder veraltete Geräte-Cache-Datei aktualisiert oder eine neue Datei erstellt. Die Funktion r ist immer verfügbar, wenn sie ohne ein Argument für den Pfadnamen angegeben wird; sie kann durch die Berechtigungen des lsof-Prozesses eingeschränkt sein.

Wenn verfügbar, weist die Funktion u lsof an, die Geräte-Cache-Datei am Standard- oder angegebenen Pfad zu lesen, falls möglich, und sie bei Bedarf neu zu erstellen. Dies ist die Standardfunktion für die Geräte-Cache-Datei, wenn keine -D-Option angegeben wurde.

+|-e s schließt das Dateisystem mit dem Pfadnamen s aus, so dass es nicht Kernel-Funktionsaufrufen unterzogen wird, die blockieren könnten. Die Option +e schließt [stat]({filename}../../stat)(2), lstat(2) und die meisten [readlink]({filename}../../readlink)(2) Kernel-Funktionsaufrufe aus. Die Option -e schließt nur [stat]({filename}../../stat)(2) und lstat(2) Kernel-Funktionsaufrufe aus. Mehrere Dateisysteme können mit separaten +|-e-Spezifikationen angegeben werden, und für jedes können [readlink]({filename}../../readlink)(2)-Aufrufe ausgeschlossen oder nicht ausgeschlossen werden.

Diese Option ist derzeit nur für Linux implementiert.

ACHTUNG: Diese Option kann leicht auf andere Dateisysteme als das beabsichtigte angewendet werden, da sie den Pfadnamen anstelle der zuverlässigeren Geräte- und Inodenummern verwendet.

(Geräte- und Inodenummern werden über den potenziell blockierenden stat(2)-Kernelaufruf abgerufen und sind daher nicht verfügbar, aber siehe die Option +|-m m als mögliche alternative Möglichkeit, Gerätenummern anzugeben.) Verwenden Sie diese Option mit großer Sorgfalt und geben Sie den Pfadnamen des zu verwendenden Dateisystems vollständig an.

Wenn offene Dateien in den ausgenommenen Dateisystemen gemeldet werden, kann es möglicherweise nicht gelingen, alle Informationen dazu zu erhalten. Daher sind einige Informationsspalten leer, den Werten in der Spalte TYPE wird „UNKN“ vorangestellt und die anwendbare Ausnahmeoption wird am Ende der Spalte NAME in Klammern hinzugefügt. (Einige Geräteinformationsnummern können über die Option +|-m m verfügbar gemacht werden.)

+|-E     +E gibt an, dass Linux-Pipes, Linux-UNIX-Sockets, Linux-INET(6)-Sockets, die auf einem lokalen Host geschlossen sind, Linux-Pseudoterminaldateien, die POSIX-Message-Queue-Implementierung in Linux und Linux-Eventfd mit Endpunktinformationen angezeigt werden sollen, und die Dateien der Endpunkte ebenfalls angezeigt werden sollen.

Hinweis 1: UNIX-Socket-Datei-Endpunktinformationen sind nur verfügbar, wenn die Zeile „features enabled“ in der -v-Ausgabe „uxsockept“ enthält, und Pseudoterminal-Endpunktinformationen sind nur verfügbar, wenn die Zeile „features enabled“ „ptyept“ enthält.

Hinweis 2: POSIX-Message-Queue-Datei-Endpunktinformationen sind nur verfügbar, wenn das Mqueue-Dateisystem gemountet ist.

Pipe-Endpunktinformationen werden in der Spalte NAME in der Form „PID,cmd,FDmode“ angezeigt, wobei PID die Endpunkt-Prozess-ID ist, cmd der Befehl des Endpunkt-Prozesses, FD der Deskriptor der Endpunktdatei und Mode der Zugriffsmodus der Endpunktdatei ist.

Pseudoterminal-Endpunktinformationen werden in der Spalte NAME als „->/dev/ptsmin PID,cmd,FDmode“ oder „PID,cmd,FDmode“ angezeigt. Die erste Form ist für ein Master-Gerät, die zweite für ein Slave-Gerät. „min“ ist die Minor-Gerätenummer eines Slave-Geräts, und PID, cmd, FD und Mode sind die gleichen wie bei Pipe-Endpunktinformationen. Hinweis: Pseudoterminal-Endpunktinformationen sind nur verfügbar, wenn die Zeile „features enabled“ in der -v-Ausgabe „ptyept“ enthält. Darüber hinaus funktioniert diese Funktion unter Linux-Kerneln ab Version 4.13.0.

UNIX-Socket-Datei-Endpunktinformationen werden in der Spalte NAME in der Form „type=TYPE ->INO=INODE PID,cmd,FDmode“ angezeigt, wobei TYPE der Socket-Typ, INODE die Inodenummer des verbundenen Sockets und PID, cmd, FD und Mode die gleichen wie bei Pipe-Endpunktinformationen sind. Hinweis: UNIX-Socket-Datei-Endpunktinformationen sind nur verfügbar, wenn die Zeile „features enabled“ in der -v-Ausgabe „uxsockept“ enthält.

Die Informationen zum INET-Socket-Datei-Endpunkt werden in der Spalte NAME in der Form
`` -> PID,cmd,FDmode`` eingefügt, wobei PID, cmd, FD und mode die gleichen sind wie bei den Informationen zum Pipe-Endpunkt. Die Endpunktinformationen sind nur dann verfügbar, wenn der Socket für die lokale IPC verwendet wird; beide Endpunkte binden an dieselbe lokale IPv4- oder IPv6-Adresse.

POSIX-Message-Queue-Datei-Endpunktinformationen werden in der Spalte NAME in der gleichen Form wie bei Pipe angezeigt.

Eventfd-Endpunktinformationen werden in der Spalte NAME in der gleichen Form wie bei Pipe angezeigt. Diese Funktion funktioniert unter Linux-Kerneln ab Version 5.2.0.

Mehrere Vorkommnisse dieser Informationen können in einer Datei in der Spalte NAME erscheinen.

-E gibt an, dass Dateien, die unterstützte Endpunkte enthalten, mit Endpunktinformationen, aber nicht mit den Dateien der Endpunkte angezeigt werden sollen.

+|-f [cfgGn]
f allein klärt, wie Pfadnamenargumente zu interpretieren sind. In Kombination mit c, f, g, G oder n gibt es an, ob die Anzeige von Kernel-Datei-Strukturinformationen aktiviert (`+`) oder deaktiviert (`-`) werden soll.

Normalerweise wird ein Pfadnamenargument als Dateisystemname betrachtet, wenn es mit einem in mount(8) gemeldeten, gemounteten Verzeichnisnamen übereinstimmt oder wenn es ein Blockgerät ist, das im Mount-Ausgang aufgeführt und einem gemounteten Verzeichnisnamen zugeordnet ist. Wenn +f angegeben ist, werden alle Pfadnamenargumente als Dateisystemnamen behandelt, und lsof gibt eine Fehlermeldung aus, wenn dies nicht der Fall ist. Dies kann nützlich sein, wenn der Dateisystemname (das gemountete Gerät) kein Blockgerät ist. Dies ist bei einigen CD-ROM-Dateisystemen der Fall.

Wenn -f allein angegeben ist, werden alle Pfadnamenargumente als einfache Dateien behandelt. Beispielsweise bewirkt das Argument -f -- /, dass lsof nach offenen Dateien mit dem Pfadnamen / sucht, nicht nach allen offenen Dateien im Dateisystem / (Root).

Achten Sie darauf, dass +f und -f ordnungsgemäß beendet sind und nicht von einem Zeichen (z. B. dem Namen der Datei oder des Dateisystems) gefolgt werden, das als Parameter interpretiert werden könnte. Verwenden Sie beispielsweise -- nach +f und -f, wie in diesen Beispielen.

$ lsof +f -- /file/system/name
$ lsof -f -- /file/name

Die Anzeige von Informationen aus Kernel-Datei-Strukturen, die mit der Option +f [cfgGn] angefordert werden, ist normalerweise deaktiviert und nicht vollständig oder teilweise für einige Varianten verfügbar – z. B. /proc-basierte Linux-Kernel unter 2.6.22. Wenn das Präfix von f ein Pluszeichen (+) ist, fordern diese Zeichen Datei-Strukturinformationen an:

c    Anzahl der Verwendungen der Datei-Struktur (nicht Linux)
f    Adresse der Datei-Struktur (nicht Linux)
g    Abkürzungen für Datei-Flags (Linux 2.6.22 und höher)

Abkürzung. Flag im C-Code (siehe open(2))

W         O_WRONLY
RW        O_RDWR
CR        O_CREAT
EXCL      O_EXCL
NTTY      O_NOCTTY
TR        O_TRUNC
AP        O_APPEND
ND        O_NDELAY
SYN       O_SYNC
ASYN      O_ASYNC
DIR       O_DIRECT
DTY       O_DIRECTORY
NFLK      O_NOFOLLOW
NATM      O_NOATIME
DSYN      O_DSYNC
RSYN      O_RSYNC
LG        O_LARGEFILE
CX        O_CLOEXEC
TMPF      O_TMPFILE

G   Datei-Flags im Hexadezimalsystem (Linux 2.6.22 und höher)
n   Dateistruktur-Knotenadresse (nicht Linux)

Wenn das Präfix ein Minuszeichen (`-') ist, deaktivieren die gleichen Zeichen die Anzeige der angegebenen Werte.

Datei-Strukturadressen, Verwendungshäufigkeiten, Flags und Knotenadressen können verwendet werden, um identische Dateien, die von Kindprozessen geerbt wurden, und identische Dateien, die von verschiedenen Prozessen verwendet werden, leichter zu erkennen. Die Spaltenausgabe von lsof kann nach den Spalten sortiert werden, die die Werte enthalten, und aufgelistet werden, um die identische Dateiverwendung zu identifizieren, oder die lsof-Feldausgabe kann durch ein AWK- oder Perl-Postfilter-Skript oder durch ein C-Programm geparst werden.

-F f    gibt eine Zeichenliste `f` an, die die Felder auswählt, die für die Verarbeitung durch ein
anderes Programm ausgegeben werden sollen, und das Zeichen, das jedes Ausgabefeld beendet.
Jedes auszugebende Feld wird mit einem einzelnen Zeichen in `f` angegeben. Das Feldtrennzeichen ist
standardmäßig NL, kann aber auf NUL (000) geändert werden. Siehe den Abschnitt "AUSGABE FÜR
ANDERE PROGRAMME" für eine Beschreibung der Feldidentifikationszeichen und des
Feldausgabeprozesses.

Wenn die Feldselektionszeichenliste leer ist, werden alle Standardfelder ausgewählt (mit Ausnahme des Feldes für die rohe Geräteadresse, des Sicherheitskontextfeldes und des Zonenfeldes aus Kompatibilitätsgründen) und das NL-Feldtrennzeichen wird verwendet.

Wenn die Feldselektionszeichenliste nur eine Null (0) enthält, werden alle Felder ausgewählt (mit Ausnahme des Feldes für die rohe Geräteadresse aus Kompatibilitätsgründen) und das NUL-Trennzeichen wird verwendet.

Andere Kombinationen von Feldern und ihren zugehörigen Feldtrennzeichen müssen mit expliziten Einträgen in f festgelegt werden, wie im Abschnitt "AUSGABE FÜR ANDERE PROGRAMME" beschrieben.

Wenn ein Feldselektionszeichen ein Element identifiziert, das lsof normalerweise nicht auflistet - z. B. PPID, ausgewählt mit -R - Spezifikation des Feldzeichens - z. B. -FR - wird auch die Auflistung des Elements ausgewählt.

Wenn die Feldselektionszeichenliste das einzelne Zeichen ? enthält, zeigt lsof eine Hilfeliste der Feldidentifikationszeichen an. (Escapieren Sie das ?-Zeichen, wie es Ihr Shell erfordert.)

-g [s]  schließt die Auflistung von Dateien für die Prozesse aus, deren optionale
Prozessgruppen-ID-Nummern (PGID) in der durch Kommas getrennten Menge `s` enthalten sind - z. B.
``123`` oder ``123,^456``. (Es sollten keine Leerzeichen in der Menge vorhanden sein.)

PGID-Nummern, die mit `^` (Negation) beginnen, stellen Ausschlüsse dar.

Mehrere PGID-Nummern werden in einer einzigen OR-verknüpften Menge zusammengefasst, bevor sie an der AND-Optionsauswahl teilnehmen. PGID-Ausschlüsse werden jedoch ohne OR- oder AND-Verknüpfung angewendet und treten auf, bevor andere Auswahlkriterien angewendet werden.

Die Option -g aktiviert auch die Ausgabe der PGID-Nummern. Wenn sie ohne eine PGID-Menge angegeben wird, ist dies alles, was sie tut.

-H  weist `lsof` an, menschenlesbare Größen auszugeben, z. B. 123,4 K 456,7 M.

-i [i]  wählt die Auflistung von Dateien aus, deren Internetadresse mit der in `i` angegebenen
Adresse übereinstimmt. Wenn keine Adresse angegeben wird, wählt diese Option die Auflistung aller
Internet- und 25(HP-UX)-Netzwerkdateien aus.

Wenn -i4 oder -i6 ohne eine darauf folgende Adresse angegeben wird, werden nur Dateien des angegebenen IP-Protokolls, IPv4 oder IPv6, angezeigt. (Eine IPv6-Spezifikation darf nur verwendet werden, wenn das Betriebssystem IPv6 unterstützt, wie durch [46] und IPv[46] in der Ausgabe von lsof -h oder lsof -? angezeigt.) Die sequentielle Angabe von -i4, gefolgt von -i6, entspricht der Angabe von -i, und umgekehrt. Die Angabe von -i4 oder -i6 nach -i entspricht der Angabe von -i4 oder -i6 allein.

Mehrere Adressen (bis zu einem Limit von 100) können mit mehreren -i-Optionen angegeben werden. (Eine Portnummer oder ein Bereich von Dienstnamen zählt als eine Adresse.) Sie werden in einer einzigen ODER-Verknüpfung zusammengefasst, bevor sie an der UND-Option-Auswahl teilnehmen.

Eine Internetadresse wird in der folgenden Form angegeben (Elemente in eckigen Klammern sind optional):

[46][Protokoll][@Hostname|Hostadresse][:Dienst|Port]

wobei: 46 gibt die IP-Version, IPv4 oder IPv6, an, die für die folgende Adresse gilt. 6 darf nur angegeben werden, wenn das UNIX-Betriebssystem IPv6 unterstützt. Wenn weder 4 noch 6 angegeben wird, gilt die folgende Adresse für alle IP-Versionen. Protokoll ist ein Protokollname – TCP, UDP oder UDPLITE. Hostname ist ein Internet-Hostname. Es sei denn, eine bestimmte IP-Version wird angegeben, werden offene Netzwerkdateien, die mit Hostnamen aller Versionen verbunden sind, ausgewählt. Hostadresse ist eine numerische IPv4-Adresse in Punktnotation oder eine numerische IPv6-Adresse in Doppelpunktnotation, eingeschlossen in eckigen Klammern, falls das UNIX-Betriebssystem IPv6 unterstützt. Wenn eine IP-Version ausgewählt ist, dürfen nur deren numerische Adressen angegeben werden. Dienst ist ein Name aus /etc/services – z. B. smtp oder eine Liste davon. Port ist eine Portnummer oder eine Liste davon.

IPv6-Optionen dürfen nur verwendet werden, wenn das UNIX-Betriebssystem IPv6 unterstützt. Um zu überprüfen, ob das Betriebssystem IPv6 unterstützt, führen Sie lsof aus und geben Sie die Option -h oder -? (Hilfe) an. Wenn die angezeigte Beschreibung der Option -i die Elemente [46] und IPv[46] enthält, wird IPv6 unterstützt.

IPv4-Hostnamen und -Adressen dürfen nicht angegeben werden, wenn die Auswahl von Netzwerkdateien auf IPv6 mit -i 6 beschränkt ist. IPv6-Hostnamen und -Adressen dürfen nicht angegeben werden, wenn die Auswahl von Netzwerkdateien auf IPv4 mit -i 4 beschränkt ist. Wenn eine offene IPv4-Netzwerkdatei in eine IPv6-Adresse abgebildet wird, wird der Typ der offenen Datei als IPv6 und nicht als IPv4 angezeigt, und ihre Anzeige wird durch 6 und nicht durch 4 ausgewählt.

Mindestens eine Adresskomponente – 4, 6, Protokoll, Hostname, Hostadresse oder Dienst – muss angegeben werden. Das Zeichen @, das den Hostnamen angibt, ist immer erforderlich, ebenso wie der Doppelpunkt :, der den Port angibt. Geben Sie entweder einen Hostnamen oder eine Hostadresse an. Geben Sie entweder eine Liste von Dienstnamen oder eine Liste von Portnummern an. Wenn eine Liste von Dienstnamen angegeben wird, muss möglicherweise auch das Protokoll angegeben werden, falls sich die TCP-, UDP- und UDPLITE-Portnummern für den Dienstnamen unterscheiden. Verwenden Sie beliebige Groß- oder Kleinbuchstaben für das Protokoll.

Servicenamen und Portnummern können in einer Liste kombiniert werden, deren Einträge durch Kommas getrennt sind und deren numerische Bereichseinträge durch Minuszeichen getrennt sind. Es dürfen keine Leerzeichen enthalten sein, und alle Servicenamen müssen zum angegebenen Protokoll gehören. Da Servicenamen eingebettete Minuszeichen enthalten können, kann der Startwert eines Bereichs kein Servicename sein; er kann jedoch eine Portnummer sein.

Hier sind einige Beispieladressen:

-i6 - Nur IPv6
TCP:25 - TCP und Port 25
@1.2.3.4 - Internet-IPv4-Hostadresse 1.2.3.4
@[3ffe:1ebc::1]:1234 - Internet-IPv6-Hostadresse
3fe:1ebc::1, Port 1234
UDP:who - UDP-Who-Dienstport
_:513 - TCP, Port 513 und Hostname lsof.itap
tcp@foo:1-10,smtp,99 - TCP, Ports 1 bis 10,
Dienstname smtp, Port 99, Hostname foo
tcp@bar:1-smtp - TCP, Ports 1 bis smtp, Host bar
:time - entweder TCP, UDP oder UDPLITE-Time-Dienstport

-K k wählt die Auflistung von Aufgaben (Threads) von Prozessen aus, auf Systemen, auf denen die Thread-Berichterstattung unterstützt wird. (Wenn die Hilfsausgabe, d. h. die Ausgabe der Optionen -h oder -?, diese Option anzeigt, wird die Thread-Berichterstattung vom System unterstützt.)

Wenn -K von einem Wert, k, gefolgt wird, muss dieser ``i'' sein. Dadurch werden Aufgaben von lsof ignoriert, insbesondere im Standardfall, in dem keine anderen Optionen angegeben sind.

Wenn -K und -a beide unter Linux angegeben werden und die Aufgaben eines Hauptprozesses durch andere Optionen ausgewählt werden, wird auch der Hauptprozess so aufgelistet, als wäre er eine Aufgabe, jedoch ohne eine Aufgaben-ID. (Siehe die Beschreibung der Spalte TID im Abschnitt AUSGABE.)

Wo die FreeBSD-Version Threads unterstützt, werden alle Threads mit ihren IDs aufgelistet.

Im Allgemeinen erben Threads und Aufgaben die Dateien des Aufrufers, können jedoch einige schließen und andere öffnen, sodass lsof immer alle offenen Dateien von Threads und Aufgaben meldet.

-k k gibt eine Kernel-Namenslistendatei, k, anstelle von /vmunix, /mach usw. an. -k ist unter AIX auf dem IBM RISC/System 6000 nicht verfügbar.

-l verhindert die Umwandlung von Benutzer-ID-Nummern in Login-Namen. Es ist auch nützlich, wenn die Login-Namensuche nicht ordnungsgemäß oder langsam funktioniert.

+|-L [l] aktiviert (`+`) oder deaktiviert (`-`) die Auflistung von Dateilinkanzahlen, sofern diese verfügbar sind - z. B. sind sie nicht für Sockets oder die meisten FIFOs und Pipes verfügbar.

Wenn +L ohne eine folgende Zahl angegeben wird, werden alle Linkanzahlen aufgelistet. Wenn -L angegeben wird (Standard), werden keine Linkanzahlen aufgelistet.

Wenn +L von einer Zahl gefolgt wird, werden nur Dateien mit einer Linkanzahl kleiner als dieser Zahl aufgelistet. (Es darf keine Zahl auf -L folgen.) Eine Spezifikation der Form ``+L1'' wählt offene Dateien aus, die bereits gelöscht wurden. Eine Spezifikation der Form ``+aL1 <Dateisystem>'' wählt gelöschte offene Dateien auf dem angegebenen Dateisystem aus.

Für andere Linkanzahlvergleiche verwenden Sie die Feld-Ausgabe (-F) und ein Nachbearbeitungsskript oder -programm.

+|-m m gibt eine alternative Kernel-Speicherdatei an oder aktiviert die Verarbeitung einer ergänzenden Mount-Tabelle.

Die Option -m m gibt eine Kernel-Speicherdatei, m, anstelle von /dev/kmem oder /dev/mem an – z. B. eine Crash-Dump-Datei.

Die Option +m fordert an, dass eine Datei mit Mount-Ergänzungen in die Standardausgabedatei geschrieben wird. Alle anderen Optionen werden stillschweigend ignoriert.

In der Datei mit Mount-Ergänzungen gibt es eine Zeile für jedes gemountete Dateisystem, die das Verzeichnis des gemounteten Dateisystems enthält, gefolgt von einem einzelnen Leerzeichen und dann der Gerätenummer im hexadezimalen Format „0x“ – z. B.:

/ 0x801

Lsof kann die Datei mit Mount-Ergänzungen verwenden, um Gerätenummern für Dateisysteme zu erhalten, wenn es diese nicht über stat(2) oder lstat(2) erhalten kann.

Die Option +m m identifiziert m als Datei mit Mount-Ergänzungen.

Hinweis: Die Optionen +m und +m m sind nicht für alle unterstützten Dialekte verfügbar. Überprüfen Sie die Ausgabe der Optionen -h oder -? von lsof, um festzustellen, ob die Optionen +m und +m m verfügbar sind.

+|-M Aktiviert (+) oder deaktiviert (-) die Berichterstattung über Portmapper-Registrierungen für lokale TCP-, UDP- und UDPLITE-Ports, sofern Port-Mapping unterstützt wird. (Weitere Informationen finden Sie im letzten Absatz dieser Optionsbeschreibung, wo die Berichterstattung über Portmapper-Registrierungen unterstützt wird.)

Der Standard-Berichtungsmodus wird vom lsof-Ersteller mit der HASPMAPENABLED-Direktive in der machine.h-Headerdatei des Dialekts festgelegt; lsof wird mit der deaktivierten HASPMAPENABLED-Direktive ausgeliefert, sodass die Portmapper-Berichterstattung standardmäßig deaktiviert ist und mit +M angefordert werden muss. Durch die Angabe der Option -h oder -? von lsof wird der Standardmodus gemeldet. Das Deaktivieren der Portmapper-Registrierung, wenn sie bereits deaktiviert ist, oder das Aktivieren, wenn sie bereits aktiviert ist, ist zulässig. Wenn die Portmapper-Registrierungsberichterstattung aktiviert ist, zeigt lsof die Portmapper-Registrierung (falls vorhanden) für lokale TCP-, UDP- oder UDPLITE-Ports in eckigen Klammern unmittelbar nach den Portnummern oder Servicenamen an – z. B. „:1234[name]“ oder „:name[100083]“. Die Registrierungsinformationen können je nachdem, was das registrierende Programm dem Portmapper bei der Registrierung des Ports bereitgestellt hat, ein Name oder eine Nummer sein.

Wenn die Portmapper-Registrierungsberichterstattung aktiviert ist, kann lsof etwas langsamer laufen oder sogar blockiert werden, wenn der Zugriff auf den Portmapper überlastet oder gestoppt wird. Kehren Sie den Berichtungsmodus um, um festzustellen, ob die Portmapper-Registrierungsberichterstattung lsof verlangsamt oder blockiert.

Für die Zwecke der Portmapper-Registrierungsberichterstattung betrachtet lsof einen TCP-, UDP- oder UDPLITE-Port als lokal, wenn: er im lokalen Teil seiner enthaltenden Kernelstruktur gefunden wird; oder wenn er sich im fremden Teil seiner enthaltenden Kernelstruktur befindet und die lokalen und fremden Internetadressen identisch sind; oder wenn er sich im fremden Teil seiner enthaltenden Kernelstruktur befindet und die fremde Internetadresse INADDR_LOOPBACK (127.0.0.1) ist. Diese Regel kann dazu führen, dass lsof einige fremde Ports auf Maschinen mit mehreren Schnittstellen ignoriert, wenn sich die fremde Internetadresse in einer anderen Schnittstelle befindet als die lokale.


Hier ist die Übersetzung des Markdown-Textes ins Deutsche, wobei die Formatierung und Einrückung beibehalten werden:

Siehe die LSOF-FAQ (Der FAQ-Bereich gibt den Speicherort an), um weitere Informationen zu den Problemen bei der Berichterstattung über die Portmapper-Registrierung zu erhalten.

Die Berichterstattung über die Portmapper-Registrierung wird nur für Dialekte unterstützt, die RPC-Headerdateien enthalten. (Einige Linux-Distributionen mit GlibC 2.14 haben diese nicht.) Wenn die Berichterstattung über die Portmapper-Registrierung unterstützt wird, zeigt die Hilfeausgabe mit -h oder -? die Option +|-M an.

    -n       verhindert die Umwandlung von Netzwerknummern in Hostnamen für Netzwerkdateien. Das Verhindern der
    Umwandlung kann dazu führen, dass LSOF schneller ausgeführt wird. Es ist auch nützlich, wenn die Hostnamenauflösung
    nicht ordnungsgemäß funktioniert.

    -N       wählt die Auflistung von NFS-Dateien aus.

    -o       weist LSOF an, den Dateioffset immer anzuzeigen. Dadurch wird die Spaltenüberschrift SIZE/OFF in OFFSET geändert.
    Hinweis: In einigen UNIX-Dialekten kann LSOF keine genauen oder konsistenten Dateioffset-Informationen aus seinen
    Kernel-Datenquellen abrufen, manchmal nur für bestimmte Dateitypen (z. B. Socket-Dateien). Weitere Informationen finden Sie in der LSOF-FAQ (Der FAQ-Bereich gibt den Speicherort an).

Die Optionen -o und -s schließen sich gegenseitig aus; sie können nicht beide angegeben werden. Wenn keine von beiden angegeben ist, zeigt LSOF den Wert an - Größe oder Offset - der für den Dateityp geeignet und verfügbar ist.

    -o o     definiert die Anzahl der Dezimalstellen (o), die nach dem "0t" für einen Dateioffset ausgegeben werden sollen, bevor das Format in "0x..." geändert wird. Ein Wert von o gleich Null

(unbegrenzt) weist LSOF an, das Format "0t" für die gesamte Offset-Ausgabe zu verwenden.

Diese Option weist LSOF NICHT an, den Offset immer anzuzeigen; geben Sie -o (ohne nachfolgende Zahl) an, um dies zu tun. -o o gibt nur die Anzahl der Stellen nach "0t" in der gemischten Größen- und Offset- oder Offset-Only-Ausgabe an. Um beispielsweise LSOF anzuweisen, den Offset immer mit einer Dezimalstellenzahl von 10 anzuzeigen, verwenden Sie:

    -o -o 10
    oder
    -oo10

Die Standardanzahl der nach "0t" zulässigen Stellen beträgt normalerweise 8, kann aber vom LSOF-Ersteller geändert worden sein. Weitere Informationen finden Sie in der Beschreibung der Option -o o in der Ausgabe der Option -h oder -?, um den aktuell gültigen Standardwert zu ermitteln.

    -O       weist LSOF an, die Strategie zu umgehen, mit der es versucht, zu verhindern, dass es durch bestimmte Kernel-Operationen blockiert wird - d. h., diese in separaten Kindprozessen auszuführen.

Weitere Informationen zu Kernel-Operationen, die LSOF blockieren können, finden Sie in den Abschnitten BLOCKS AND TIMEOUTS und AVOIDING KERNEL BLOCKS.

Obwohl die Verwendung dieser Option den LSOF-Startaufwand reduziert, kann sie auch dazu führen, dass LSOF hängt, wenn das Kernel nicht auf eine Funktion antwortet. Verwenden Sie diese Option mit Vorsicht.

    -p s     schließt die Auflistung von Dateien für die Prozesse aus oder wählt sie aus, deren optionale Prozess-ID (PID)-Nummern in der kommagetrennten Menge s enthalten sind - z. B. "123" oder

"123,^456". (In der Menge dürfen keine Leerzeichen enthalten sein).


    PID-Nummern, die mit `^' (Negation) beginnen, stellen Ausnahmen dar.

Mehrere Prozess-ID-Nummern werden in einer einzigen OR-verknüpften Menge zusammengefasst, bevor sie an der Auswahl über AND-Optionen teilnehmen. PID-Ausnahmen werden jedoch ohne OR- oder AND-Verknüpfung angewendet und treten in Kraft, bevor andere Auswahlkriterien angewendet werden.

    -P       verhindert die Umwandlung von Portnummern in Portnamen für Netzwerkdateien (die Zuordnung wird
    üblicherweise aus /etc/services gelernt). Das Unterdrücken der Umwandlung kann dazu führen, dass lsof etwas schneller läuft. Es ist auch nützlich, wenn die Portnamen-Suche nicht ordnungsgemäß

funktioniert.

    -Q       ignoriert fehlgeschlagene Suchbegriffe. Wenn lsof angewiesen wird, nach Benutzern einer Datei oder eines Geräts oder nach einer bestimmten PID oder nach bestimmten Protokollen, die von

dieser PID verwendet werden, usw. zu suchen, gibt lsof einen Fehler zurück, wenn eines der Suchergebnisse leer ist. Mit der Option -Q wird dieses Verhalten geändert, so dass lsof stattdessen einen erfolgreichen Exit-Code (0) zurückgibt, auch wenn eines der Suchergebnisse leer ist. Darüber hinaus werden fehlende Suchbegriffe nicht an stderr gemeldet.

    +|-r [t[c<N>][m<fmt>]]
    schaltet lsof in den Wiederholungsmodus. Dort listet lsof die durch andere Optionen ausgewählten offenen Dateien auf, wartet t Sekunden (Standard: fünfzehn), wiederholt dann die Auflistung und

wiederholt die Auflistung mit Verzögerung, bis sie durch eine durch das Präfix der Option definierte Bedingung gestoppt wird.

Wenn das Präfix ein `-\' ist, ist der Wiederholungsmodus endlos. Lsof muss mit einem Interrupt- oder Quitsignal beendet werden. `c' dient dazu, die Grenzen der Wiederholung anzugeben; wenn die Anzahl der Iterationen erreicht, stoppt sich Lsof selbst.

Wenn das Präfix ein `+' ist, endet der Wiederholungsmodus, sobald im ersten Zyklus keine offenen Dateien aufgelistet werden, und natürlich, wenn lsof mit einem Interrupt- oder Quitsignal gestoppt wird. Wenn der Wiederholungsmodus beendet wird, weil keine Dateien aufgelistet werden, ist der Prozess-Exit-Code null, wenn jemals offene Dateien aufgelistet wurden; andernfalls ist er eins.

Lsof markiert das Ende jeder Auflistung: Wenn die Feld-Ausgabe im Gange ist (die Option -F wurde angegeben), ist die Standardmarkierung `m'; andernfalls ist die Standardmarkierung ``========''. Auf die Markierung folgt ein NL-Zeichen.

Das optionale Argument "m<fmt>" gibt ein Format für die Markierungszeile an. Die Zeichen <fmt>, die auf `m' folgen, werden als Formatbezeichnung für die Funktion strftime(3) interpretiert, wenn sowohl diese als auch die Funktion localtime(3) in der C-Bibliothek des Dialekts verfügbar sind. Konsultieren Sie die Dokumentation von strftime(3), um zu erfahren, was in seiner Formatbezeichnung enthalten sein kann. Beachten Sie, dass, wenn die Feld-Ausgabe mit der Option -F angefordert wird, <fmt> das NL-Format ``%n'' nicht enthalten kann. Beachten Sie auch, dass, wenn <fmt> Leerzeichen oder andere Zeichen enthält, die die Interpretation der Argumente durch die Shell beeinflussen, <fmt> entsprechend in Anführungszeichen gesetzt werden muss.

Der Wiederholungsmodus reduziert den Lsof-Startaufwand, so dass es effizienter ist, diesen Modus zu verwenden, als Lsof beispielsweise wiederholt von einem Shell-Skript aus aufzurufen.

Um den Wiederholungsmodus am effizientesten zu nutzen, verwenden Sie +|-r zusammen mit der Angabe anderer Lsof-Auswahloptionen, so dass die Menge des Kernel-Speichers, auf den Lsof zugreift, auf ein Minimum reduziert wird. Optionen, die auf Prozessebene filtern – z. B. -c, -g, -p, -u – sind die effizientesten Selektoren.


Der Modus für wiederholte Ausführung ist nützlich in Kombination mit der Feld-Ausgabe (siehe die Beschreibung der Option -F) und einem überwachenden awk- oder Perl-Skript oder einem C-Programm.

`-R` weist `lsof` an, die Parent-Prozess-ID in der Spalte `PPID` aufzulisten.

`-s [p:s]` `s` allein weist `lsof` an, die Dateigröße immer anzuzeigen. Dadurch wird der Spaltentitel `SIZE/OFF` in `SIZE` geändert. Wenn die Datei keine Größe hat, wird nichts angezeigt.

Die optionale Form -s p:s ist nur für ausgewählte Dialekte verfügbar und nur dann, wenn sie in der Hilfsausgabe (-h oder -?) aufgeführt ist.

Wenn die optionale Form verfügbar ist, kann s von einem Protokollnamen (p), entweder TCP oder UDP, einem Doppelpunkt (:), einer durch Kommas getrennten Liste von Protokollstatusnamen gefolgt werden. Die Option bewirkt, dass offene TCP- und UDP-Dateien ausgeschlossen werden, wenn ihre Statusnamen in der Liste (s) mit einem ^ davor stehen, oder eingeschlossen werden, wenn ihre Namen nicht mit einem ^ davor stehen.

Dialekte, die diese Option unterstützen, unterstützen möglicherweise nur ein Protokoll. Wenn ein nicht unterstütztes Protokoll angegeben wird, wird eine Meldung angezeigt, die darauf hinweist, dass die Statusnamen für das Protokoll nicht verfügbar sind.

Wenn eine Einbeziehungliste definiert ist, werden nur Netzwerkdateien mit Statusnamen, die in der Liste enthalten sind, in der lsof-Ausgabe angezeigt. Das Angeben eines einzelnen Statusnamens bedeutet, dass nur Netzwerkdateien mit diesem einzelnen Statusnamen aufgelistet werden.

Die Groß- und Kleinschreibung ist bei den Protokoll- oder Statusnamen unerheblich, es dürfen jedoch keine Leerzeichen vorhanden sein, und der Doppelpunkt (:) zur Trennung des Protokollnamens (p) und der Liste der Statusnamen (s) ist erforderlich.

Wenn nur TCP- und UDP-Dateien aufgelistet werden sollen, wie durch die angegebenen Ausschlüsse und Einbeziehungen gesteuert, muss auch die Option -i angegeben werden. Wenn nur die Dateien eines einzelnen Protokolls aufgelistet werden sollen, fügen Sie dessen Namen als Argument zur Option -i hinzu.

Um beispielsweise nur Netzwerkdateien mit dem TCP-Status LISTEN aufzulisten, verwenden Sie:

`-iTCP -sTCP:LISTEN`

Oder, um beispielsweise Netzwerkdateien mit allen UDP-Status mit Ausnahme von Idle aufzulisten, verwenden Sie:

`-iUDP -sUDP:^Idle`

Die Statusnamen variieren je nach UNIX-Dialekt, so dass es nicht möglich ist, eine vollständige Liste anzugeben. Einige gängige TCP-Statusnamen sind: CLOSED, IDLE, BOUND, LISTEN, ESTABLISHED, ^ YN_SENT, SYN_RCDV, ESTABLISHED, CLOSE_WAIT, FIN_WAIT1, CLOSING, LAST_ACK, FIN_WAIT_2 und TIME_WAIT. Zwei gängige UDP-Statusnamen sind Unbound und Idle.

Weitere Informationen zur Verwendung der Ausschluss- und Einbeziehung von Protokollstatus finden Sie in den lsof-FAQs (Der FAQ-Bereich gibt seinen Speicherort an), einschließlich Beispielen.

Die Optionen -o (ohne eine nachfolgende dezimale Ziffer) und -s (ohne eine nachfolgende Liste von Protokoll- und Statusnamen) schließen sich gegenseitig aus; sie können nicht beides angegeben werden. Wenn keine von beiden angegeben ist, zeigt lsof den Wert an, der für den Dateityp geeignet und verfügbar ist – entweder Größe oder Offset.

Da einige Dateitypen keine tatsächlichen Größen haben – Sockets, FIFOs, Pipes usw. – zeigt lsof für deren Größen die Inhaltsmengen in den zugehörigen Kernel-Puffern an, falls dies möglich ist.


-S [t]   gibt einen optionalen Timeout-Wert in Sekunden für Kernel-Funktionen an - `lstat`(2), `readlink`(2) und `stat`(2) - die andernfalls zu einem Deadlock führen könnten. Das Minimum für `t` ist zwei; der Standardwert ist fünfzehn; wenn kein Wert angegeben wird, wird der Standardwert verwendet.

Siehe den Abschnitt BLÖCKE UND TIMEOUTS für weitere Informationen.

-T [t]   steuert die Berichterstattung bestimmter TCP/TPI-Informationen, die auch von `netstat`(1) nach den Netzwerkadressen gemeldet werden. In der normalen Ausgabe erscheinen die Informationen in Klammern, wobei jedes Element mit einem Schlüsselwort identifiziert wird, gefolgt von einem Gleichheitszeichen (=) und durch ein einzelnes Leerzeichen voneinander getrennt:

<TCP- oder TPI-Zustandsname>
QR=<Länge der Lesewarteschlange>
QS=<Länge der Sendewarteschlange>
SO=<Socket-Optionen und -werte>
SS=<Socket-Zustände>
TF=<TCP-Flags und -werte>
WR=<Länge der Lesefenstergröße>
WW=<Länge der Schreibfenstergröße>

Nicht alle Werte werden für alle UNIX-Dialekte gemeldet. Die Elemente werden (sofern verfügbar) nach dem Elementnamen und dem Gleichheitszeichen (=) gemeldet.

Wenn sich die Ausgabe im Feldmodus befindet (siehe AUSGABE FÜR ANDERE PROGRAMME), erscheint jedes Element als ein Feld mit einem vorangestellten Zeichen T.

-T ohne nachfolgende Schlüsselzeichen deaktiviert die Berichterstattung von TCP/TPI-Informationen.

-T mit nachfolgenden Zeichen wählt die Berichterstattung bestimmter TCP/TPI-Informationen aus:

f    wählt die Berichterstattung von Socket-Optionen, -Zuständen und -Werten sowie TCP-Flags und -Werten aus.
q    wählt die Berichterstattung der Warteschlangenlänge aus.
s    wählt die Berichterstattung des Verbindungsstatus aus.
w    wählt die Berichterstattung der Fenstergröße aus.

Nicht alle Auswahlen sind für einige UNIX-Dialekte aktiviert. Der Status kann für alle Dialekte ausgewählt werden und wird standardmäßig gemeldet. Die Hilfeausgabe für die Option -T (-h oder -?) zeigt, welche Auswahlen mit dem UNIX-Dialekt verwendet werden können.

Wenn -T verwendet wird, um Informationen auszuwählen - d. h. es wird einem oder mehreren Auswahlzeichen gefolgt - wird die Anzeige des Status standardmäßig deaktiviert und muss explizit durch erneute Auswahl in den Zeichen, die auf -T folgen, aktiviert werden. (In diesem Fall entspricht der Standardwert dann -Ts.) Wenn beispielsweise Warteschlangenlängen und Status gewünscht sind, verwenden Sie -Tqs.

Socket-Optionen, Socket-Zustände, einige Socket-Werte, TCP-Flags und ein TCP-Wert können (sofern in dem UNIX-Dialekt verfügbar) in Form der Namen gemeldet werden, die üblicherweise nach SO_, so_, SS_, TCP_ und TF_ in den Header-Dateien des Dialekts erscheinen - meistens <sys/socket.h>, <sys/socketvar.h> und <netinet/tcp_var.h>. Sehen Sie in diesen Header-Dateien nach, um die Bedeutung der Flags, Optionen, Zustände und Werte zu erfahren.

``SO='' steht vor Socket-Optionen und -Werten; ``SS='', vor Socket-Zuständen; und ``TF='', vor TCP-Flags und -Werten.

Wenn ein Flag oder eine Option einen Wert hat, folgt der Wert auf ein Gleichheitszeichen (=) und den Namen - z. B. SO=LINGER=5'',SO=QLIM=5'', ``TF=MSS=512''. Die folgenden sieben Werte können gemeldet werden:

Name Gemeldet Beschreibung (übliches Symbol)


KEEPALIVE Keep-Alive-Zeit (SO_KEEPALIVE)
LINGER Linger-Zeit (SO_LINGER)
MSS maximale Segmentgröße (TCP_MAXSEG)
PQLEN Anzahl der teilweise verbundenen Verbindungen in der Warteschlange
QLEN Anzahl der etablierten Verbindungen in der Warteschlange
QLIM maximale Anzahl der etablierten Verbindungen in der Warteschlange
RCVBUF Länge des Empfangspuffers (SO_RCVBUF)
SNDBUF Länge des Sendepuffers (SO_SNDBUF)

Details zu den Socket-Optionen und -Werten, Socket-Status und TCP-Flags und -Werten, die für bestimmte UNIX-Dialekte angezeigt werden können, finden Sie in den Antworten auf die Fragen „Warum meldet lsof keine Socket-Optionen, Socket-Status und TCP-Flags und -Werte für meinen Dialekt?“ und „Warum meldet lsof nicht die Anzahl der teilweise verbundenen Verbindungen in der Warteschlange für meinen Dialekt?“ in den FAQs von lsof (der FAQ-Bereich gibt seinen Speicherort an). Unter Linux werden mit dieser Option auch der Status von UNIX-Domänen-Sockets ausgegeben.

-t erzeugt eine kurze Ausgabe, die nur Prozess-IDs enthält (ohne Kopfzeile), sodass sie einfach programmatisch verwendet werden kann, z. B.:

# Alle Prozesse neu laden, die eine alte SSL-Version verwenden
lsof -t /lib/*/libssl.so.* | xargs -r kill -HUP

# Liste der Prozesse abrufen und dann diese durchlaufen (nur Bash)
mapfile -t pids < <(
lsof -wt /var/log/your.log
)
for pid in "${pids[@]}" ; do
your_command -p "$pid"
done

Die Option -t impliziert die Option -w.

-u s wählt die Auflistung von Dateien für den Benutzer aus, dessen Login-Namen oder Benutzer-ID-Nummern in der durch Kommas getrennten Menge s enthalten sind, z. B. „abe“ oder „548,root“. (Es sollten keine Leerzeichen in der Menge vorhanden sein.)

Mehrere Login-Namen oder Benutzer-ID-Nummern werden in einer einzelnen ODER-verknüpften Menge zusammengefasst, bevor sie an der AND-verknüpften Optionsauswahl teilnehmen.

Wenn ein Login-Name oder eine Benutzer-ID von einem ^-Zeichen vorangestellt wird, wird er zu einer Negation, d. h. Dateien von Prozessen, die dem Login-Namen oder der Benutzer-ID gehören, werden niemals aufgelistet. Eine negierte Login-Name- oder Benutzer-ID-Auswahl wird weder mit anderen Auswahlen AND- noch ODER-verknüpft; sie wird vor allen anderen Auswahlen angewendet und schließt die Auflistung der Dateien des Prozesses absolut aus. Um beispielsweise lsof anzuweisen, die Auflistung von Dateien auszuschließen, die zu Root-Prozessen gehören, geben Sie -u^root oder -u^0 an.

-U wählt die Auflistung von UNIX-Domänen-Socket-Dateien aus.

-v wählt die Auflistung von `lsof`-Versionsinformationen aus, einschließlich: Revisionsnummer; Zeitpunkt, zu dem die `lsof`-Binärdatei erstellt wurde; wer die Binärdatei erstellt hat und wo; der Name des Compilers, der zum Erstellen der `lsof`-Binärdatei verwendet wurde; die Compiler-Version, wenn sie verfügbar ist; die Compiler- und Loader-Flags, die zum Erstellen der `lsof`-Binärdatei verwendet wurden; und Systeminformationen, typischerweise die Ausgabe der Option -a von `uname`.

-V weist `lsof` an, die Elemente anzuzeigen, nach denen es gesucht hat und die es nicht gefunden hat – Befehlsnamen, Dateinamen, Internetadressen oder Dateien, Login-Namen, NFS-Dateien, PIDs, PGIDs und UIDs.

Wenn andere Optionen mit Suchoptionen ODER-verknüpft werden oder Compilezeit-Optionen die Auflistung einiger Dateien einschränken, meldet lsof möglicherweise nicht, dass es ein Suchobjekt nicht gefunden hat, wenn eine ODER-verknüpfte Option oder eine Compilezeit-Option die Auflistung der geöffneten Datei, die das gefundene Suchobjekt enthält, verhindert.


Für Beispiel kann lsof -V -iTCP@foobar -a -d 999 möglicherweise einen Fehler beim Auffinden von offenen Dateien unter TCP@foobar nicht melden und möglicherweise keine Dateien auflisten, wenn keine eine Dateideskriptornummer von 99 hat. Eine ähnliche Situation tritt auf, wenn HASSECURITY und HASNOSOCKSECURITY zur Kompilierzeit definiert sind und die Auflistung von offenen Dateien verhindern.

+|-w Aktiviert (+) oder deaktiviert (-) die Unterdrückung von Warnmeldungen.

Der lsof-Builder kann wählen, Warnmeldungen standardmäßig aktiviert oder deaktiviert zu haben. Der Standardzustand der Warnmeldung wird in der Ausgabe der Option -h oder -? angezeigt. Das Deaktivieren von Warnmeldungen, wenn diese bereits deaktiviert sind, oder das Aktivieren, wenn sie bereits aktiviert sind, ist zulässig.

Die Option -t impliziert die Option -w.

-x [fl] kann zusammen mit den Optionen +d und +D verwendet werden, um die Verarbeitung so zu lenken, dass sie symbolische Links und/oder Dateisystem-Mountpunkte überquert, die beim Scannen des

Verzeichnisses (+d) oder des Verzeichnisbaums (+D) gefunden werden.

Wenn -x ohne nachfolgenden Parameter angegeben wird, wird die Querverarbeitung sowohl für symbolische Links als auch für Dateisystem-Mountpunkte aktiviert. Beachten Sie, dass, wenn -x ohne Parameter angegeben wird, das nächste Argument mit '-' oder '+' beginnen muss.

Der optionale Parameter 'f' aktiviert die Querverarbeitung von Dateisystem-Mountpunkten; 'l' aktiviert die Querverarbeitung von symbolischen Links.

Die Option -x darf nicht ohne die Angabe einer Option +d oder +D angegeben werden.

-X Dies ist eine dialektspezifische Option.

AIX:

Diese IBM AIX RISC/System 6000-Option fordert die Berichterstattung über ausgeführte Textdatei- und Shared-Library-Referenzen an.

WARNUNG: Da diese Option die Kernel-Funktion readx() verwendet, kann ihre Verwendung auf einem stark ausgelasteten AIX-System dazu führen, dass ein Anwendungsprozess so vollständig blockiert, dass er weder

beendet noch gestoppt werden kann. Ich habe dies noch nie gesehen oder eine entsprechende Meldung erhalten, aber ich denke, es besteht eine entfernte Möglichkeit, dass dies passieren könnte.

Standardmäßig ist die Verwendung von readx() deaktiviert. Auf AIX 5L und höher benötigt lsof möglicherweise setuid-root-Berechtigungen, um die von dieser Option angeforderten Aktionen auszuführen.

Der lsof-Builder kann festlegen, dass die Option -X auf Prozesse beschränkt wird, deren tatsächliche UID root ist. Wenn dies geschehen ist, wird die Option -X nicht in der -h- oder -?-Hilfeausgabe angezeigt, es sei denn, die tatsächliche UID des lsof-Prozesses ist root. Die Standard-lsof-Distribution erlaubt jeder UID die Angabe von -X, so dass sie standardmäßig in der Hilfeausgabe angezeigt wird.

Wenn die AIX-readx()-Verwendung deaktiviert ist, kann lsof möglicherweise keine Informationen für alle Text- und Loader-Dateireferenzen melden, aber es kann auch verhindern, dass ein AIX-Kernel-Verzeichnissuchfehler, der als Stale Segment ID-Fehler bekannt ist, verschlimmert wird.

Die Funktion readx(), die von lsof oder einem anderen Programm verwendet wird, um auf einige Abschnitte des Kernel-Virtuellen Speichers zuzugreifen, kann den Stale Segment ID-Fehler auslösen. Sie kann dazu führen, dass die Funktion dir_search() des Kernels fälschlicherweise annimmt, dass ein Teil einer Kopie eines Dateisystems im Speicher auf Null gesetzt wurde. Ein anderer Anwendungsprozess, der sich von lsof unterscheidet und den Kernel auffordert, das Verzeichnis zu durchsuchen, z. B. durch die Verwendung von open(2), kann dazu führen, dass dir_search() endlos wiederholt, wodurch der Anwendungsprozess blockiert wird.


Konsultieren Sie die LSOF-FAQ (der Abschnitt FAQ gibt seinen Speicherort an) und die Datei 00README der LSOF-Distribution für eine vollständigere Beschreibung des Fehlers „Stale Segment ID“, des zugehörigen APAR und der Methoden zum Definieren der Verwendung von readx() beim Kompilieren von LSOF.

Linux: Diese Linux-Option fordert LSOF auf, die Informationen aller geöffneten TCP-, UDP- und UDPLITE-IPv4- und IPv6-Dateien zu überspringen.

Diese Linux-Option ist am nützlichsten, wenn das System eine extrem große Anzahl geöffneter TCP-, UDP- und UDPLITE-Dateien hat, deren Verarbeitung in den Dateien /proc/net/tcp* und /proc/net/udp* lange dauern würde und deren Berichterstattung nicht von Interesse ist.

Verwenden Sie diese Option mit Vorsicht und nur, wenn Sie sicher sind, dass die Informationen, die Sie mit LSOF anzeigen möchten, nicht mit offenen TCP-, UDP- oder UDPLITE-Socket-Dateien verbunden sind.

Solaris 10 und höher: Diese Solaris-10-und-höher-Option fordert die Berichterstattung von zwischengespeicherten Pfaden für Dateien an, die gelöscht wurden, d. h. mit rm(1) oder unlink(2) entfernt wurden.

Der zwischengespeicherte Pfad wird durch die Zeichenkette (gelöscht) gefolgt, um anzugeben, dass der Pfad, durch den die Datei geöffnet wurde, gelöscht wurde.

Da zwischenzeitige Änderungen am Pfad – d. h. Umbenennungen mit mv(1) oder rename(2) – nicht im zwischengespeicherten Pfad aufgezeichnet werden, berichtet LSOF nur den Pfad, durch den die Datei geöffnet wurde, nicht ihren möglicherweise unterschiedlichen endgültigen Pfad.

-z [z] gibt an, wie Solaris 10 und höhere Zoninformationen behandelt werden sollen.

Ohne ein nachfolgendes Argument – z. B. NO z – gibt die Option an, dass die Zonennamen in der Spalte ZONE ausgegeben werden sollen.

Die Option -z kann durch einen Zonennamen, z, gefolgt werden. Dadurch listet LSOF nur die geöffneten Dateien für Prozesse in dieser Zone auf. Es können mehrere Optionen -z z und Argumente angegeben werden, um eine Liste von benannten Zonen zu erstellen. Jede geöffnete Datei eines beliebigen Prozesses in einer der Zonen wird angezeigt, vorbehaltlich anderer Bedingungen, die durch andere Optionen und Argumente angegeben werden.

-Z [Z] gibt an, wie SELinux-Sicherheitskontexte behandelt werden sollen. Die Ausgabe und die Unterstützung des Feldzeichens Z werden unterdrückt, wenn SELinux im ausgeführten Linux-Kernel deaktiviert ist.

Weitere Informationen zur Ausgabe des Feldzeichens Z finden Sie im Abschnitt AUSGABE FÜR ANDERE PROGRAMME.

Ohne ein nachfolgendes Argument – z. B. NO Z – gibt die Option an, dass die Sicherheitskontexte in der Spalte SECURITY-CONTEXT aufgelistet werden sollen.

Die Option -Z kann durch einen Platzhalter-Sicherheitskontextnamen, Z, gefolgt werden. Dadurch listet LSOF nur die geöffneten Dateien für Prozesse in diesem Sicherheitskontext auf. Es können mehrere Optionen -Z Z und Argumente angegeben werden, um eine Liste von Sicherheitskontexten zu erstellen. Jede geöffnete Datei eines beliebigen Prozesses in einem der Sicherheitskontexte wird angezeigt, vorbehaltlich anderer Bedingungen, die durch andere Optionen und Argumente angegeben werden. Beachten Sie, dass Z A:B:C oder *:B:C oder A:B:* oder *:*:C sein kann, um mit dem Kontext A:B:C übereinzustimmen.


    --       Die Option mit dem doppelten Minuszeichen ist ein Marker, der das Ende der Schlüsselwort-Optionen signalisiert.
    Sie kann beispielsweise verwendet werden, wenn der erste Dateiname mit einem Minuszeichen beginnt. Sie kann
    auch verwendet werden, wenn das Fehlen eines Wertes für die letzte Schlüsselwort-Option durch das Vorhandensein
    eines Minuszeichens in der folgenden Option und vor dem Beginn der Dateinamen angezeigt werden muss.

    names    Dies sind Pfadnamen bestimmter Dateien, die aufgelistet werden sollen. Symbolische Links werden vor der Verwendung aufgelöst.

Der erste Name kann durch die Option -- von den vorhergehenden Optionen getrennt werden.

Wenn ein Name das Einbindungspunktverzeichnis eines Dateisystems oder das Gerät des Dateisystems ist, listet lsof alle offenen Dateien auf dem Dateisystem auf. Um als Dateisystem betrachtet zu werden, muss der Name mit einem Einbindungspunktverzeichnisnamen in der Ausgabe von mount(8) übereinstimmen oder mit dem Namen eines Blockgeräts, das einem Einbindungspunktverzeichnisnamen zugeordnet ist. Die Option +|-f kann verwendet werden, um lsof zu zwingen, einen Namen als Dateisystem-Identifikator (+f) oder als einfache Datei (-f) zu betrachten.

Wenn ein Name ein Pfad zu einem Verzeichnis ist, das nicht der Einbindungspunkt eines Dateisystems ist, wird er genau wie eine reguläre Datei behandelt - d.h. seine Auflistung ist auf Prozesse beschränkt, die ihn als Datei oder als prozessspezifisches Verzeichnis geöffnet haben, z. B. das Root- oder aktuelle Arbeitsverzeichnis. Um anzufordern, dass lsof nach offenen Dateien innerhalb eines Verzeichnisses sucht, verwenden Sie die Optionen +d s und +D D.

Wenn ein Name der Basisname einer Familie von Multiplex-Dateien ist - z. B. /dev/pt[cs] von AIX, listet lsof alle zugehörigen Multiplex-Dateien auf dem Gerät auf, die geöffnet sind - z. B. /dev/pt[cs]/1, /dev/pt[cs]/2 usw.

Wenn ein Name ein UNIX-Domain-Socket-Name ist, sucht lsof normalerweise nur anhand der Zeichen des Namens danach - genau wie er angegeben ist und im Kernel-Socket gespeichert ist Struktur. (Die Ausnahme von dieser Regel für Linux finden Sie im nächsten Absatz.) Das Angeben eines relativen Pfads - z. B. ./file - anstelle des absoluten Pfads der Datei - z. B. /tmp/file - funktioniert nicht, da lsof die von Ihnen angegebenen Zeichen mit dem abgleichen muss, was es in den UNIX-Domain-Socket-Strukturen des Kernels findet.

Wenn ein Name ein Linux-UNIX-Domain-Socket-Name ist, kann lsof in einem Fall danach suchen mit seiner Geräte- und Inodenummer, wodurch name ein relativer Pfad sein kann. Dieser Fall erfordert, dass der absolute Pfad - d. h. einer, der mit einem Schrägstrich ('/') beginnt - von dem Prozess verwendet wird, der den Socket erstellt hat und daher in der Datei /proc/net/unix gespeichert wird; und es erfordert, dass lsof in der Lage ist, die Geräte- und Knotennummern sowohl des absoluten Pfads in /proc/net/unix als auch von name über erfolgreiche stat(2)-Systemaufrufe zu erhalten. Wenn diese Bedingungen erfüllt sind, kann lsof den UNIX-Domain-Socket suchen, wenn ein Pfad dazu in name angegeben wird. Wenn der Pfad beispielsweise /dev/log lautet und eine lsof-Suche gestartet wird, wenn das Arbeitsverzeichnis /dev ist, kann name ./log lauten.


Wenn ein Name keiner der oben genannten ist, listet lsof alle offenen Dateien auf, deren Geräte- und Inodenummer mit der des angegebenen Pfadnamens übereinstimmen.

Wenn Sie auch die Option -b angegeben haben, dürfen Sie nur Dateisysteme angeben, für die Ihre Mount-Tabelle alternative Gerätenummern liefert. Siehe die Abschnitte AVOIDUNG VON KERNEL-BLOCKS und ALTERNATIVE GERÄTENUMMERN für weitere Informationen.

Mehrere Dateinamen werden in einer einzigen ODER-verknüpften Menge zusammengefasst, bevor sie an der AND-Option-Auswahl teilnehmen.

AFS

Lsof unterstützt die Erkennung von AFS-Dateien für diese Dialekte (und AFS-Versionen):

AIX 4.1.4 (AFS 3.4a)
HP-UX 9.0.5 (AFS 3.4a)
Linux 1.2.13 (AFS 3.3)
Solaris 2.[56] (AFS 3.4a)

Es kann AFS-Dateien auf anderen Versionen dieser Dialekte erkennen, dies wurde jedoch nicht getestet. Abhängig davon, wie AFS implementiert ist, kann lsof AFS-Dateien in anderen Dialekten erkennen oder Schwierigkeiten bei der Erkennung von AFS-Dateien in den unterstützten Dialekten haben.

Lsof kann möglicherweise nicht alle Aspekte von AFS-Dateien in unterstützten Dialekten identifizieren, wenn die AFS-Kernelunterstützung über dynamische Module implementiert wird, deren Adressen nicht in der Liste der Kernel-Variablennamen enthalten sind. In diesem Fall muss lsof möglicherweise die Identität von AFS-Dateien erraten und kann möglicherweise keine Volumendaten vom Kernel abrufen, die zur Berechnung der AFS-Volumeknotennummern benötigt werden. Wenn lsof keine Volumeknotennummern berechnen kann, wird in der Spalte NODE ein Leerzeichen angezeigt.

Die Option -A A ist in einigen Dialektimplementierungen von lsof verfügbar, um die Datei mit der Namensliste anzugeben, in der die Kerneladressen dynamischer Module gefunden werden können. Wenn diese Option verfügbar ist, wird sie in der lsof-Hilfeausgabe angezeigt, die als Antwort auf die Optionen -h oder -? angezeigt wird.

Weitere Informationen zu dynamischen Modulen, ihren Symbolen und deren Auswirkungen auf die lsof-Optionen finden Sie in den lsof-FAQs (der FAQ-Bereich gibt seinen Speicherort an).

Da AFS-Pfad-Lookups nicht am Kernel-Namenscache teilzunehmen scheinen, kann lsof die Pfadnamenkomponenten für AFS-Dateien nicht identifizieren.

SICHERHEIT

Lsof hat drei Funktionen, die Sicherheitsbedenken verursachen können. Erstens ermöglicht sein Standard-Kompilierungsmodus jedem, alle offenen Dateien damit aufzulisten. Zweitens erstellt es standardmäßig eine für den Benutzer lesbare und beschreibbare Cache-Datei im Home-Verzeichnis der realen Benutzer-ID, die lsof ausführt. (Die Funktionen „alle offenen Dateien auflisten“ und „Cache-Datei erstellen“ können deaktiviert werden, wenn lsof kompiliert wird.) Drittens benennen seine Optionen -k und -m alternative Kernel-Namenslisten- oder Speicherdateien.

Die Einschränkung der Auflistung aller offenen Dateien wird durch die Kompilierzeit-Optionen HASSECURITY und HASNOSOCKSECURITY gesteuert. Wenn HASSECURITY definiert ist, erlaubt lsof nur dem Root-Benutzer, alle offenen Dateien aufzulisten. Der Nicht-Root-Benutzer kann nur offene Dateien von Prozessen mit derselben Benutzeridentifikationsnummer wie die reale Benutzer-ID-Nummer des lsof-Prozesses (dem, mit dem sich der Benutzer angemeldet hat) auflisten.


Wenn sowohl HASSECURITY als auch HASNOSOCKSECURITY definiert sind, kann jeder die Liste der geöffneten Socket-Dateien einsehen, vorausgesetzt, sie werden mit der Option -i ausgewählt.

Wenn HASSECURITY nicht definiert ist, kann jeder die Liste aller geöffneten Dateien einsehen.

Die Hilfsausgabe, die als Antwort auf die Optionen -h oder -? angezeigt wird, gibt den Status der Definitionen HASSECURITY und HASNOSOCKSECURITY an.

Weitere Informationen zum Erstellen von lsof mit aktivierten HASSECURITY- und HASNOSOCKSECURITY-Optionen finden Sie im Abschnitt „Sicherheit“ der Datei 00README der lsof-Distribution.

Die Erstellung und Verwendung einer für den Benutzer lesbaren und beschreibbaren Cache-Datei wird durch die Compile-Zeit-Option HASDCACHE gesteuert. Weitere Informationen dazu, wie der Pfad gebildet wird, finden Sie im Abschnitt „DEVICE CACHE FILE“ und in den folgenden Abschnitten. Aus Sicherheitsgründen ist Folgendes zu beachten: In der Standard-lsof-Distribution wird die Cache-Datei im Home-Verzeichnis des Benutzers, unter dem lsof ausgeführt wird, also z. B. / oder /root, geschrieben, wenn der tatsächliche Benutzer-ID, unter der lsof ausgeführt wird, Root ist. Wenn HASDCACHE nicht definiert ist, schreibt oder versucht lsof nicht, eine Cache-Datei zu lesen.

Wenn HASDCACHE definiert ist, enthält die lsof-Hilfsausgabe, die als Antwort auf die Optionen -h, -D? oder -? angezeigt wird, Informationen zur Handhabung der Cache-Datei. Wenn HASDCACHE nicht definiert ist, enthält die Ausgabe von -h oder -? keine Beschreibung der Option -D.

Bevor Sie sich entscheiden, die Funktion der Cache-Datei zu deaktivieren, sollten Sie Folgendes beachten: Die Aktivierung verbessert die Leistung von lsof, da der Startaufwand für die Untersuchung aller Knoten in /dev (oder /devices) reduziert wird. Lesen Sie dazu die Diskussion in der Datei 00DCACHE der lsof-Distribution und die lsof-FAQ (der FAQ-Abschnitt gibt deren Speicherort an).

Wenn Sie sich nicht sicher sind, können Sie die Verwendung der Cache-Datei vorübergehend mit der Option -Di deaktivieren.

Wenn ein lsof-Benutzer alternative Kernel-Namenslisten oder Speicherdateien mit den Optionen -k und -m angibt, prüft lsof, ob der Benutzer die Berechtigung zum Lesen dieser Dateien mit access(2) hat. Dies soll verhindern, dass lsof aufgrund der ihm möglicherweise verliehenen besonderen Berechtigungen auf Dateien zugreift, auf die der tatsächliche Benutzer normalerweise keinen Zugriff hätte.

AUSGABE

Dieser Abschnitt beschreibt die Informationen, die lsof für jede geöffnete Datei ausgibt. Weitere Informationen zur Ausgabe, die von einem anderen Programm verarbeitet werden kann, finden Sie im Abschnitt „AUSGABE FÜR ANDERE PROGRAMME“.

^ sof gibt nur druckbare 8-Bit-Zeichen aus (als solche werden sie durch isprint(3) definiert). Nicht druckbare Zeichen werden in einer von drei Formen ausgegeben: die C-Form \``\[bfrnt]``; die Steuerzeichenform^(z. B.^@); oder die hexadezimale Form mit dem Präfix\x(z. B.\xab). Ein Leerzeichen ist nicht druckbar in der Spalte „COMMAND“ (\x20`) und wird an anderer Stelle als druckbar behandelt.

Für einige Dialekte gibt lsof die erweiterten 8-Bit-Zeichen einer Sprachumgebung aus, wenn HASSETLOCALE in der Header-Datei machine.h des Dialekts definiert ist. Der lsof-Prozess muss eine Umgebungsvariable für die Sprache (z. B. LANG) erhalten, deren Wert eine bekannte Sprachumgebung darstellt, in der die erweiterten Zeichen als druckbar durch isprint(3) betrachtet werden. Andernfalls betrachtet lsof die erweiterten Zeichen als nicht druckbar und gibt sie gemäß seinen Regeln für nicht druckbare Zeichen aus, wie oben angegeben. Sehen Sie in der Manpage setlocale(3) Ihres Dialekts nach, welche anderen Umgebungsvariablen anstelle von LANG verwendet werden können, z. B. LC_ALL, LC_CTYPE usw.


Die Sprachunterstützung von Lsof für einen bestimmten Dialekt umfasst auch Wide-Zeichen – z. B. UTF-8 –, wenn HASSETLOCALE und HASWIDECHAR in der Datei machine.h des Dialekts definiert sind und wenn eine geeignete Sprache in der entsprechenden Umgebungsvariablen für den Lsof-Prozess definiert wurde. Wide-Zeichen werden unter diesen Bedingungen als druckbar angezeigt, wenn iswprint(3) sie als solche meldet.

Wenn HASSETLOCALE, HASWIDECHAR und eine geeignete Sprache nicht definiert sind oder wenn iswprint(3) Wide-Zeichen meldet, die nicht druckbar sind, betrachtet Lsof die Wide-Zeichen als nicht druckbar und gibt jedes ihrer 8 Bits gemäß den oben genannten Regeln für nicht druckbare Zeichen aus.

Weitere Informationen finden Sie in den Antworten auf die Fragen zum Thema „Sprachunterstützung“ in den Lsof-FAQs (der FAQ-Bereich gibt den Speicherort an).

Lsof passt die Größe der Ausgabespalten bei jeder Ausführung dynamisch an und garantiert, dass jede Spalte eine Mindestgröße hat. Außerdem wird garantiert, dass jede Spalte durch mindestens ein Leerzeichen von ihrer vorherigen Spalte getrennt ist.

COMMAND enthält die ersten neun Zeichen des Namens des UNIX-Befehls, der dem Prozess zugeordnet ist. Wenn ein Wert ungleich Null für die Option +c w angegeben wird, enthält die Spalte die ersten w Zeichen des Namens des UNIX-Befehls, der dem Prozess zugeordnet ist, bis zur vom UNIX-Dialekt an Lsof übermittelten Zeichenbegrenzung. (Weitere Informationen finden Sie in der Beschreibung der Option +c w oder in den Lsof-FAQs. Der FAQ-Bereich gibt den Speicherort an.)

Wenn w kleiner ist als die Länge des Spaltentitels „COMMAND“, wird dieser auf diese Länge erhöht.

Wenn ein Wert von Null für die Option +c w angegeben wird, enthält die Spalte alle Zeichen des Namens des UNIX-Befehls, der dem Prozess zugeordnet ist.

Alle Befehlsnamen, die vom Kernel in seinen Strukturen gespeichert werden, werden in der Feld-Ausgabe angezeigt, wenn der Befehlsnamendescriptor („c“) angegeben wird. Informationen zur Auswahl der Feld-Ausgabe und des zugehörigen Befehlsnamendescriptors finden Sie im Abschnitt „AUSGABE FÜR ANDERE BEFEHLE“.

PID ist die Prozess-ID des Prozesses.

TID ist die Task-(Thread-)ID, wenn die Task-(Thread-)Berichterstattung vom Dialekt unterstützt wird und ein Task-(Thread) aufgelistet wird. (Wenn die Hilfsausgabe – d. h. die Ausgabe der Optionen -h oder -? – diese Option anzeigt, wird die Task-(Thread-)Berichterstattung vom Dialekt unterstützt.)

Eine leere TID-Spalte in Linux zeigt einen Prozess – d. h. keinen Task – an.


TASKCMD ist der Name des Task-Befehls. In der Regel ist dies identisch mit dem Prozessnamen in der Spalte COMMAND, aber einige Task-Implementierungen (z. B. Linux) ermöglichen es einem Task, seinen Befehlsnamen zu ändern.

Die Breite der Spalte TASKCMD unterliegt denselben Größenbeschränkungen wie die Spalte COMMAND.

ZONE ist der Name der Solaris 10 oder neueren Zone. Diese Spalte muss mit der Option -z ausgewählt werden.

SECURITY-CONTEXT
ist der SELinux-Sicherheitskontext. Diese Spalte muss mit der Option -Z ausgewählt werden.

Beachten Sie, dass die Option -Z deaktiviert wird, wenn SELinux im ausgeführten Linux-Kernel deaktiviert ist.

PPID ist die Prozess-ID des übergeordneten Prozesses. Sie wird nur angezeigt, wenn die Option -R angegeben wurde.

PGID ist die Prozessgruppen-ID, die dem Prozess zugeordnet ist. Sie wird nur angezeigt, wenn die Option -g angegeben wurde.

USER ist die Benutzer-ID oder der Login-Name des Benutzers, dem der Prozess gehört, normalerweise das Gleiche wie in [ps]({filename}../../ps)(1) gemeldet. Unter Linux ist USER jedoch die Benutzer-ID oder der Login, der das Verzeichnis in /proc besitzt, in dem lsof Informationen über den Prozess findet. Normalerweise ist dies der gleiche Wert, der von [ps]({filename}../../ps)(1) gemeldet wird, kann sich aber ändern, wenn der Prozess seine effektive Benutzer-ID geändert hat. (Weitere Informationen finden Sie in der Beschreibung der Option -l, wann eine Benutzer-ID oder ein Login-Name angezeigt wird.)

FD ist die Dateideskriptornummer der Datei oder:

cwd aktuelles Arbeitsverzeichnis;

Lnn Bibliotheksreferenzen (AIX); ctty Zeichentty; DEL gelöschte Datei; err Fehler bei der FD-Information (siehe Spalte NAME); fp. Fileport (Darwin); jld Jail-Verzeichnis (FreeBSD); ltx gemeinsam genutztes Bibliothekstextsegment (Code und Daten); Mxx hexadezimale Nummer des zugeordneten Speichertyps xx. m86 DOS Merge-zugeordnete Datei; mem zugeordnete Speicherdatei; mmap zugeordnetes Speichergerät; NOFD für ein Linux /proc//fd-Verzeichnis, das nicht geöffnet werden kann - der Pfad des Verzeichnisses erscheint in der Spalte NAME, gefolgt von einer Fehlermeldung; pd übergeordnetes Verzeichnis; Rnn unbekannte Regionsnummer (HP-UX); rtd Stammverzeichnis; twd aktuelles Arbeitsverzeichnis pro Task; txt Programmtext (Code und Daten); v86 VP/ix-zugeordnete Datei;

FD wird von einem der folgenden Zeichen gefolgt, die den Modus beschreiben, in dem die Datei geöffnet ist:

r für Lesezugriff;
w für Schreibzugriff;
u für Lese- und Schreibzugriff;
Leerzeichen, wenn der Modus unbekannt ist und keine Sperre vorhanden ist.
Zeichen folgt;
`-`, wenn der Modus unbekannt ist und eine Sperre vorhanden ist.
Zeichen folgt.

Das Moduszeichen wird von einem der folgenden Sperrzeichen gefolgt, die die Art der auf die Datei angewendeten Sperre beschreiben:

N für eine Solaris NFS-Sperre unbekannten Typs;
r für eine Lesesperre für einen Teil der Datei;
R für eine Lesesperre für die gesamte Datei;
w für eine Schreibsperre für einen Teil der Datei;
W für eine Schreibsperre für die gesamte Datei;
u für eine Lese- und Schreibsperre beliebiger Länge;
U für eine Sperre unbekannten Typs;
x für eine SCO OpenServer Xenix-Sperre für einen Teil der Datei;
X für eine SCO OpenServer Xenix-Sperre für die gesamte Datei;
Leerzeichen, wenn keine Sperre vorhanden ist.

Weitere Informationen zum Feld „Lock-Information“ finden Sie im Abschnitt LOCKS.

Die Inhalte der Spalte FD bilden ein einzelnes Feld für die Analyse in Nachbearbeitungsskripten. FD-Nummern größer als 9999 werden zu „*“ und den letzten drei Ziffern abgekürzt. Zum Beispiel wird 10001 als „*001“ angezeigt.

TYPE ist der Typ des Knotens, der der Datei zugeordnet ist, z. B. VDIR, VREG usw.

oder „ax25“ für eine Linux-AX.25-Socket;

oder „a_inode“ für einen anonymen Inode;

oder „icmp“ für eine ICMP-Socket;

oder „inet“ für eine Internet-Domain-Socket;

oder „ipx“ für eine IPX-Socket;

oder „key“ für eine interne Key-Management-Socket;

oder „lla“ für eine HP-UX-Link-Level-Zugriffsdatei;

oder „ndrv“ für eine Netzwerk-Treiber-Socket;

oder „netlink“ für eine Netlink-Socket;

oder „pack“ für eine Packet-Socket;

oder „ppp“ für eine PPP-Socket;

oder „raw“ für eine Raw-Socket;

oder „raw6“ für eine Raw-IPv6-Socket;

oder „rte“ für eine AF_ROUTE-Socket;

oder „sock“ für eine Socket mit unbekanntem Domain;

oder „systm“ für eine System-Socket;

oder „unix“ für eine UNIX-Domain-Socket;

oder „x.25“ für eine HP-UX-x.25-Socket;

oder „ATALK“ für eine AppleTalk-Socket;

oder „BLK“ für eine Block-Spezialdatei;

oder „CHR“ für eine Zeichen-Spezialdatei;

oder „DEL“ für eine Linux-Map-Datei, die gelöscht wurde;

oder „DIR“ für ein Verzeichnis;

oder „DOOR“ für eine VDOOR-Datei;

oder „EVENTFD“ für ein Eventfd;

oder „FIFO“ für eine FIFO-Spezialdatei;

oder „FSEVENTS“ für Fsevents;

oder „IPv4“ für eine IPv4-Socket;

oder „IPv6“ für eine offene IPv6-Netzwerkdatei – auch wenn ihre Adresse IPv4 ist und einer IPv6-Adresse zugeordnet ist;

oder „KQUEUE“ für eine BSD-ähnliche Kernel-Event-Queue-Datei;

oder „LINK“ für eine symbolische Link-Datei;

oder „MPB“ für eine Multiplexed-Block-Datei;

oder „MPC“ für eine Multiplexed-Character-Datei;

oder „PAS“ für eine /proc/as-Datei;

oder „PAXV“ für eine /proc/auxv-Datei;

oder „PCRE“ für eine /proc/cred-Datei;

oder „PCTL“ für eine /proc-Steuerdatei;

oder „PCUR“ für den aktuellen /proc-Prozess;

oder „PCWD“ für das aktuelle Arbeitsverzeichnis von /proc;

oder „PDIR“ für ein /proc-Verzeichnis;

oder „PETY“ für eine /proc-Ausführbare-Typ-Datei (etype);

oder „PFD“ für eine /proc-Datei-Deskriptor-Datei;

oder „PFDR“ für ein /proc-Datei-Deskriptor-Verzeichnis;

oder „PFIL“ für eine ausführbare /proc-Datei;

oder „PFPR“ für ein /proc-FP-Register-Set;

oder „PGD“ für eine /proc/pagedata-Datei;

oder „PGID“ für eine /proc-Gruppen-Benachrichtigungsdatei;

oder „PIPE“ für Pipes;

oder „PLC“ für eine /proc/lwpctl-Datei;

oder „PLDR“ für ein /proc/lpw-Verzeichnis;

oder „PLDT“ für eine /proc/ldt-Datei;

oder „PLPI“ für eine /proc/lpsinfo-Datei;

oder „PLST“ für eine /proc/lstatus-Datei;

oder „PLU“ für eine /proc/lusage-Datei;

oder „PLWG“ für eine /proc/gwindows-Datei;

oder „PLWI“ für eine /proc/lwpsinfo-Datei;

oder „PLWS“ für eine /proc/lwpstatus-Datei;

oder „PLWU“ für eine /proc/lwpusage-Datei;

oder „PLWX“ für eine /proc/xregs-Datei;

oder „PMAP“ für eine /proc-Map-Datei (Map);

oder „PMPS“ für eine /proc/maps-Datei;

oder „PMEM“ für eine /proc-Speicherabbilddatei.

oder ``PNTF'' für eine /proc-Prozess-Notifier-Datei;

oder ``POBJ'' für eine /proc/object-Datei;

oder ``PODR'' für ein /proc/object-Verzeichnis;

oder ``POLP'' für eine /proc-Lightweight-Prozessdatei im alten Format;

oder ``POPF'' für eine /proc-PID-Datei im alten Format;

oder ``POPG'' für eine /proc-Seitendaten-Datei im alten Format;

oder ``PORT'' für eine SYSV-benannte Pipe;

oder ``PREG'' für eine /proc-Registerdatei;

oder ``PRMP'' für eine /proc/rmap-Datei;

oder ``PROCDSC'' für eine Prozessordescriptor;

oder ``PRTD'' für ein /proc-Root-Verzeichnis;

oder ``PSGA'' für eine /proc/sigact-Datei;

oder ``PSIN'' für eine /proc/psinfo-Datei;

oder ``PSTA'' für eine /proc-Statusdatei;

oder ``PSXMQ'' für eine POSIX-Nachrichtenwarteschlangendatei;

oder ``PSXSEM'' für ein POSIX-Semaphore;

oder ``PSXSHM'' für einen POSIX-Shared-Memory-Bereich;

oder ``PTS'' für eine /dev/pts-Datei;

oder ``PUSG'' für eine /proc/usage-Datei;

oder ``PW'' für eine /proc/watch-Datei;

oder ``PXMP'' für eine /proc/xmap-Datei;

oder ``REG'' für eine reguläre Datei;

oder ``SHM'' für einen Shared-Memory-Bereich;

oder ``SMT'' für eine Shared-Memory-Transportdatei;

oder ``STR'' für Streams;

oder ``STSO'' für eine Stream-Socket-Datei;

oder ``UNKN'' für eine unbekannte Datei;

oder ``UNKNcwd'' für ein unbekanntes aktuelles Arbeitsverzeichnis;

oder ``UNKNdel'' für eine unbekannte gelöschte Datei;

oder ``UNKNfd'' für einen unbekannten Dateideskriptor;

oder ``UNKNmem'' für eine unbekannte Memory-Mapped-Datei;

oder ``UNKNrtd'' für ein unbekanntes Root-Verzeichnis;

oder ``UNKNtxt'' für einen unbekannten Programmtext;

oder ``UNNM'' für einen nicht benannten Dateityp;

oder ``XNAM'' für eine OpenServer Xenix-Spezialdatei eines unbekannten Typs;

oder ``XSEM'' für eine OpenServer Xenix-Semaphore-Datei;

oder ``XSD'' für eine OpenServer Xenix-Shared-Data-Datei;

oder ``UNSP'' für eine nicht unterstützte Datei;

oder die vier Typnummern-Bytes, falls der entsprechende Name nicht bekannt ist.

FILE-ADDR enthält die Kernel-Dateistrukturadresse, wenn f für +f angegeben wurde;

FCT enthält die Dateireferenzanzahl aus der Kernel-Dateistruktur, wenn c für +f angegeben wurde;

FILE-FLAG, wenn g oder G für +f angegeben wurde, enthält dieses Feld den Inhalt des f_flag[s]-Elements der Kernel-Dateistruktur und die Kernel-Prozess-spezifischen offenen Dateiflags (falls verfügbar); `G` bewirkt, dass sie in hexadezimaler Form angezeigt werden; `g` zeigt sie als Kurznamen an; zwei Listen können mit Kommas getrennt angezeigt werden, die Listen werden durch ein Semikolon (`;`) getrennt; die erste Liste kann Kurznamen für die f_flag[s]-Werte aus der folgenden Tabelle enthalten:

AIO Asynchrone E/A (z.B. FAIO)
AP Anhängen
ASYN Asynchrone E/A (z.B. FASYNC)
BAS Blockieren, Testen und Setzen in Verwendung
BKIU Blockieren, wenn in Verwendung
BL Verwenden von Block-Offsets
BSK Block-Seek
CA Kopieren vermeiden
CIO Konkurrente E/A
CLON Klonen
CLRD CL-Lesen
CR Erstellen
DF Verzögern
DFI Verzögern IND
DFLU Daten-Flush
DIR Direkt
DLY Verzögern
DOCL Klonen durchführen
DSYN Daten-nur-Integrität
DTY Muss ein Verzeichnis sein
EVO Nur Ereignis
EX Zum Ausführen öffnen
EXCL Exklusives Öffnen
FSYN Synchrone Schreibvorgänge
GCDF Verzögern während unp_gc() (AIX)
GCMK Markieren während unp_gc() (AIX)
GTTY Über /dev/tty aufgerufen
HUP HUP ist im Gange
KERN Kernel
KIOC Kernel-ausgelöster ioctl
LCK Hat Sperre
LG Große Datei
MBLK Stream-Nachrichtenblock
MK Markieren
MNT Mounten
MSYN Multiplex-Synchronisation
NATM Zugriffzeit nicht aktualisieren
NB Nicht-blockierende E/A
NBDR Keine BDRM-Prüfung
NBIO SYSV-Nicht-blockierende E/A
NBF N-Pufferung ist aktiv
NC Kein Cache
ND Keine Verzögerung
NDSY Keine Datensynchronisation
NET Netzwerk
NFLK Nicht auf Links folgen
NMFS NM-Dateisystem
NOTO Hintergrund-Stopp deaktivieren
NSH Nicht teilen
NTTY Kein Controlling-TTY
OLRM OLR-Spiegel
PAIO POSIX-Asynchrone E/A
PATH Pfad
PP POSIX-Pipe
R Lesen
RC Datei- und Record-Lock-Cache
REV Widerrufen
RSH Geteilte Leseoperation
RSYN Lesesynchronisation
RW Lese- und Schreibzugriff
SL Geteilte Sperre
SNAP Gecookter Snapshot
SOCK Socket
SQSH Sequent-Shared-Set beim Öffnen
SQSV Sequent-SVM-Set beim Öffnen
SQR Sequent-Set-Reparatur beim Öffnen
SQS1 Sequent-Voll-Shared-Open
SQS2 Sequent-Teil-Shared-Open
STPI E/A stoppen
SWR Synchrone Leseoperation
SYN Dateintegrität beim Schreiben
TCPM TCP-Kollision vermeiden
TMPF Temporäre Datei
TR Kürzen
W Schreiben
WKUP Parallele E/A-Synchronisation
WTG Parallele E/A-Synchronisation
VH Vhangup ausstehend
VTXT Virtueller Text
XL Exklusive Sperre

Diese Liste von Namen wurde aus F*-#define-Anweisungen in den Header-Dateien <fcntl.h>,
<linux/fs.h>, <sys/fcntl.c>, <sys/fcntlcom.h> und <sys/file.h> abgeleitet; siehe die Header-Datei common.h für eine Liste, die die Entsprechung zwischen den obigen Kurznamen
und den Header-Datei-Definitionen zeigt;

die zweite Liste (nach dem Semikolon) kann Kurznamen für Kernel-Prozess-offene Datei-Flags aus dieser Tabelle enthalten:

ALLC    zugewiesen
BR  die Datei wurde gelesen
BHUP    Aktivität durch SIGHUP gestoppt
BW  die Datei wurde beschrieben
CLSG    wird geschlossen
CX  bei Ausführung schließen (siehe fcntl(F_SETFD))
LCK eine Sperre wurde angewendet
MP  im Speicher abgebildet
OPIP    Öffnen ausstehend - in Bearbeitung
RSVW    reserviertes Warten
SHMT    UF_FSHMAT gesetzt (AIX)
USE in Verwendung (multithreaded)

NODE-ID (oder INODE-ADDR für einige Dialekte) enthält eine eindeutige Kennung für den Dateiknoten (normalerweise die Kernel-vnode- oder inode-Adresse, aber auch gelegentlich eine Verkettung
der Geräte- und Knotennummer), wenn n für +f angegeben wurde;

DEVICE enthält die Gerätenummern, getrennt durch Kommas, für eine Zeichen-Spezial-, Block-Spezial-, reguläre, Verzeichnis- oder NFS-Datei;

oder „Speicher“ für einen Speicherdateisystemknoten unter Tru64 UNIX;

oder die Adresse des privaten Datenbereichs eines Solaris-Socket-Streams;

oder eine Kernel-Referenzadresse, die die Datei identifiziert (die Kernel-Referenzadresse
kann beispielsweise für FIFOs verwendet werden);

oder die Basisadresse oder der Gerätename eines Linux AX.25-Socket-Geräts.

Normalerweise werden nur die unteren 32 Bits der Tru64 UNIX-Kerneladressen angezeigt.

SIZE, SIZE/OFF oder OFFSET
ist die Größe der Datei oder der Dateioffset in Byte. Ein Wert wird nur in dieser Spalte angezeigt, wenn er verfügbar ist. Lsof zeigt den entsprechenden Wert an - Größe oder Offset - je nach Dateityp und lsof-Version.

Auf einigen UNIX-Dialekten kann lsof keine genauen oder konsistenten Dateioffset-Informationen aus seinen Kernel-Datenquellen abrufen, manchmal nur für bestimmte Dateitypen (z. B. Socket-Dateien). In anderen Fällen haben Dateien keine feste Größe – z. B. Sockets, FIFOs, Pipes –, daher zeigt lsof für deren Größe die Inhaltmengen an, die es in ihren Kernel-Pufferdeskriptoren findet (z. B. Socket-Puffergrößen oder TCP/IP-Fenstergrößen). Weitere Informationen finden Sie in den lsof-FAQs (der FAQ-Bereich gibt seinen Speicherort an).

Die Dateigröße wird dezimal angezeigt; der Offset wird normalerweise dezimal mit einem führenden 0t'' angezeigt, wenn er 8 Ziffern oder weniger enthält; in hexadezimal mit einem führenden0x'', wenn er länger als 8 Ziffern ist. (Weitere Informationen finden Sie in der Beschreibung der Option -o o, wo möglicherweise 8 auf einen anderen Wert gesetzt wird.)

Die führenden 0t'' und0x'' kennzeichnen einen Offset, wenn die Spalte sowohl eine Größe als auch einen Offset enthalten kann (d. h. ihr Titel lautet SIZE/OFF).

Wenn die Option -o angegeben ist, zeigt lsof immer den Dateioffset an (oder nichts, wenn kein Offset verfügbar ist) und beschriftet die Spalte mit OFFSET. Der Offset beginnt immer mit 0t'' oder0x'', wie oben beschrieben.

Der lsof-Benutzer kann den Wechsel von 0t'' zu0x'' mit der Option -o o steuern. Weitere Informationen finden Sie in der Beschreibung.

Wenn die Option -s angegeben ist, zeigt lsof immer die Dateigröße an (oder nichts, wenn keine Größe verfügbar ist) und beschriftet die Spalte mit SIZE. Die Optionen -o und -s schließen sich gegenseitig aus; sie können nicht beide angegeben werden.

Wenn die Option -H angegeben ist, zeigt lsof die Dateigröße in einem für Menschen lesbaren Format an.

Für Dateien, die keine feste Größe haben – z. B. solche, die sich nicht auf einem Festplattenlaufwerk befinden –, zeigt lsof alle verfügbaren Informationen über die aktuelle Größe oder Position der Datei an, wenn diese in den Kernelstrukturen vorhanden sind, die die Datei definieren.

NLINK enthält die Dateilinkanzahl, wenn +L angegeben wurde;

NODE ist die Knotennummer einer lokalen Datei;

oder die Inodenummer einer NFS-Datei im Serverhost;

oder der Internetprotokoltyp – z. B. ``TCP'';

oder ``STR'' für einen Stream;

oder ``CCITT'' für einen HP-UX x.25-Socket;

oder die IRQ- oder Inodenummer eines Linux AX.25-Socket-Geräts.

NAME ist der Name des Mountpoints und des Dateisystems, auf dem sich die Datei befindet;

oder der Name einer in der Option names angegebenen Datei (nachdem alle symbolischen Links aufgelöst wurden);

oder der Name eines Zeichenspezial- oder Blockspezialgeräts;

oder die lokalen und Remote-Internetadressen einer Netzwerkdatei; die lokale Hostname oder IP-Nummer wird durch einen Doppelpunkt (':') gefolgt, dann die Portnummer, ``->'' und die zweiteilige Remote-Adresse; IP-Adressen können als Zahlen oder Namen gemeldet werden, abhängig von den Optionen +|-M, -n und -P; durch Doppelpunkte getrennte IPv6-Adressen sind in eckigen Klammern eingeschlossen; IPv4 INADDR_ANY- und IPv6 IN6_IS_ADDR_UNSPECIFIED-Adressen und Null-Portnummern werden durch einen Stern ('*') dargestellt; einer UDP-Zieladresse kann die Zeit folgen, die seit dem letzten Senden eines Pakets an das Ziel vergangen ist; TCP-, UDP- und UDPLITE-Remote-Adressen können von TCP/TPI-Informationen in Klammern gefolgt werden – Status (z. B. ``(ESTABLISHED)'', ``(Unbound)''), Warteschlangengrößen und Fenstergrößen (nicht alle Dialekte) – ähnlich wie [netstat]({filename}../../netstat)(1) es meldet; siehe die Beschreibung der Option -T oder die Beschreibung des Felds TCP/TPI in OUTPUT FOR OTHER PROGRAMS für weitere Informationen zum Status, der Warteschlangengröße und der Fenstergröße.

oder die Adresse oder der Name einer UNIX-Domain-Socket, möglicherweise einschließlich eines Stream-Clone-Gerätenamens, eines Dateisystemobjektpfads, lokaler und externer Kerneladressen,
Socket-Paar-Informationen und einer gebundenen Vnode-Adresse;

oder die lokalen und entfernten Mount-Punkte einer NFS-Datei;

oder `STR`, gefolgt vom Stream-Namen;

oder ein Stream-Zeichengerätname, gefolgt von `->` und dem Stream-Namen oder einer Liste von
Stream-Modulnamen, getrennt durch `->`;

oder `STR:`, gefolgt von den SCO OpenServer-Streamgerät- und Modulnamen, getrennt
durch `->`;

oder Systemverzeichnisname, ` -- `, und so viele Komponenten des Pfadnamens, wie lsof
im Kernel-Namenscache für ausgewählte Dialekte finden kann (siehe den Abschnitt KERNEL-NAMEN-CACHE für weitere Informationen);

oder `PIPE->`, gefolgt von einer Solaris-Kernel-Pipe-Zieladresse;

oder `COMMON:`, gefolgt von dem Gerätenamen der Vnode-Geräteinformationsstruktur für
ein Solaris-Common-Vnode;

oder die Adressfamilie, gefolgt von einem Schrägstrich (`/`), gefolgt von vierzehn durch Komma getrennten
Bytes einer Nicht-Internet-Raw-Socket-Adresse;

oder die HP-UX X.25-Lokale Adresse, gefolgt von der virtuellen Verbindungsnummer (falls vorhanden),
gefolgt von der Remote-Adresse (falls vorhanden);

oder `(dead)` für getrennte Tru64 UNIX-Dateien – typischerweise Terminaldateien, die mit dem TIOCNOTTY-ioctl markiert und von Daemons geschlossen wurden;

oder `rd=<offset>` und `wr=<offset>` für die Werte der Lese- und Schreib-Offsets eines FIFO;

oder `clone n:/dev/event` für SCO OpenServer-Datei-Clones des Geräts /dev/event, wobei n die Neben-Gerätenummer der Datei ist;

oder `(socketpair: n)` für ein Solaris 2.6, 8, 9 oder 10 UNIX-Domain-Socket, das durch die Netzwerkfunktion socketpair(3N) erstellt wurde;

oder `no PCB` für Socket-Dateien, die kein Protokollblock zugeordnet haben,
optional gefolgt von `, CANTSENDMORE`, wenn das Senden über den Socket deaktiviert wurde,
oder `, CANTRCVMORE`, wenn das Empfangen über den Socket deaktiviert wurde (z. B. durch die Funktion [shutdown]({filename}../../shutdown)(2));

oder die lokalen und Remote-Adressen einer Linux-IPX-Socket-Datei in der Form
<net>:[<node>:]<port>, gefolgt in Klammern von den Größen der Sende- und Empfangs-Warteschlangen sowie dem Verbindungsstatus;

oder „dgram“ oder „stream“ für den Typ von UNIX-Domänen-Sockets im Kernel von UnixWare 7.1.1 und höher, gefolgt von einem Doppelpunkt (:) und dem lokalen Pfadnamen, falls verfügbar, gefolgt von „->“ und dem Remote-Pfadnamen oder der hexadezimalen Kernel-Socket-Adresse, falls verfügbar;

oder der Assoziationswert, der Assoziationsindex, der Endpunktwert, die lokale Adresse, der lokale Port, die Remote-Adresse und der Remote-Port für Linux-SCTP-Sockets;

oder „protocol:“ gefolgt vom Protokollattribut des Linux-Sockets.

Für Dialekte, die ein „namefs“-Dateisystem unterstützen, das es ermöglicht, eine Datei mit fattach(3C) mit einer anderen zu verknüpfen, fügt lsof „(FA:<address1><direction><address2>)“ in die SPALTE NAME ein.
<address1> und <address2> sind hexadezimale Vnode-Adressen. <direction> ist „<-“, wenn <address2> an diesen Vnode angehängt wurde, dessen Adresse <address1> ist; und „->“, wenn <address1>, die Vnode-Adresse dieses Vnode, an <address2> angehängt wurde. <address1> kann weggelassen werden, wenn
es bereits in der SPALTE DEVICE angezeigt wird.

Lsof kann zwei zusätzliche Anmerkungen in der SPALTE NAME für offene Solaris 10-Dateien hinzufügen: „(?)“, wenn lsof den Pfadnamen als fragwürdig ansieht; und „(gelöscht)“, wenn die Option -X angegeben wurde und lsof feststellt, dass der Pfadname der geöffneten Datei gelöscht wurde. Weitere Informationen zu diesen Ergänzungen in der SPALTE NAME finden Sie in den lsof-FAQs (Der FAQ-Bereich gibt seinen Speicherort an).

SPERREN

Lsof kann die große Vielfalt an UNIX-Dialekt-Dateisperren nicht in einem einzigen Zeichen adäquat melden. Was es in einem einzigen Zeichen meldet, ist ein Kompromiss zwischen den Informationen, die es im Kernel findet, und den Einschränkungen des Berichtsformats.

Darüber hinaus meldet lsof, wenn ein Prozess mehrere Byte-Level-Sperren für eine Datei hält, nur den Status der ersten Sperre, die es findet. Wenn es sich um eine Byte-Level-Sperre handelt, wird das Sperrzeichen in Kleinbuchstaben gemeldet, d. h. „r“, „w“ oder „x“, anstatt des entsprechenden Großbuchstaben, der für eine vollständige Dateisperre gemeldet wird.

Im Allgemeinen kann lsof nur Sperren melden, die von lokalen Prozessen auf lokalen Dateien gehalten werden. Wenn ein lokaler Prozess eine Sperre auf eine remote eingebundene Datei (z. B. NFS) setzt, speichert normalerweise der Remote-Serverhost den Sperrzustand. Eine Ausnahme ist Solaris – in einigen Patch-Levels von 2.3 und in allen Versionen ab 2.4 speichert der Solaris-Kernel Informationen über Remote-Sperren in lokalen Strukturen.

Lsof hat Probleme, Sperren für einige UNIX-Dialekte zu melden. Weitere Informationen finden Sie im Abschnitt BUGS dieser Handbuchseite oder in den lsof-FAQs (Der FAQ-Bereich gibt seinen Speicherort an).

AUSGABE FÜR ANDERE PROGRAMME

Wenn die Option -F angegeben wird, erzeugt lsof eine Ausgabe, die für die Verarbeitung durch ein anderes Programm geeignet ist, z. B. ein awk- oder Perl-Skript oder ein C-Programm.

Jede Informationseinheit wird in einem Feld ausgegeben, das durch ein führendes Zeichen identifiziert und mit einem NL (012) (oder einem NUL (000), wenn das Feldkennzeichen `0' angegeben ist) abgeschlossen wird. Die Daten des Felds folgen unmittelbar auf das Feldkennzeichen und erstrecken sich bis zum Feldterminator.

Es ist möglich, die Feldausgabe als Prozess- und Dateisätze zu betrachten. Ein Prozessesatz beginnt mit einem Feld, dessen Kennzeichen `p' (für Prozess-ID (PID)) ist. Er erstreckt sich bis zum Beginn des nächsten PID-Feldes oder bis zum Beginn des ersten Dateisatzes des Prozesses, je nachdem, was zuerst kommt. In den Prozessesatz sind Felder enthalten, die den Befehl, die Prozessgruppen-ID (PGID), die Task-ID (TID) und die Benutzer-ID (UID) oder den Login-Namen identifizieren.

Ein Dateisatz beginnt mit einem Feld, dessen Kennzeichen `f' (für Dateideskriptor) ist. Darauf folgen Zeilen, die den Zugriffsmodus, den Sperrzustand, den Typ, das Gerät, die Größe, den Offset, den Inode, das Protokoll, den Namen und die Namen der Stream-Module der Datei beschreiben. Er erstreckt sich bis zum Beginn des nächsten Datei- oder Prozessesatzes, je nachdem, was zuerst kommt.

Wenn das NUL (000) Feldterminatorzeichen mit dem Feldkennzeichen `0' ausgewählt wurde, beendet lsof jeden Prozess- und Dateisatz mit einem NL (012) Zeichen.

Lsof erzeugt immer mindestens ein Feld, das PID-Feld (p'). Im Wiederholungsmodus wird auch das Marker-Feld (m') erzeugt. Alle anderen Felder können optional in der Liste der Feldkennzeichen angegeben werden, die auf die Option -F folgt. Wenn ein Feldkennzeichen ein Element identifiziert, das lsof normalerweise nicht anzeigt - z. B. PPID, das mit -R ausgewählt wird - bewirkt die Angabe des Feldkennzeichens - z. B. -FR - auch die Anzeige des Elements.

Lsof Versionen von 4.88 bis 4.93.2 erzeugten immer ein zusätzliches Feld, das Feld für den Dateideskriptor (f'). Diese Version von lsof erzeugt dieses Feld jedoch nicht. Diese Änderung dient der Unterstützung des Anwendungsfalls, bei dem ein Benutzer nur das PID-Feld benötigt und das Feld für den Dateideskriptor nicht benötigt. Geben Sief' explizit an, wenn Sie dieses Feld benötigen.

Es ist durchaus möglich, eine Feldmenge auszuwählen, die nicht einfach geparst werden kann - z. B. kann es schwierig sein, Dateisätze zu identifizieren, wenn das Feld für den Dateideskriptor nicht ausgewählt ist. Um Ihnen bei der Vermeidung dieser Schwierigkeit zu helfen, unterstützt lsof die Option -F; sie wählt die Ausgabe aller Felder mit NL-Terminatoren aus (die Option -F0 wählt die Ausgabe aller Felder mit NUL-Terminatoren aus). Aus Kompatibilitätsgründen wählen weder -F noch -F0 das Feld für das Rohgerät aus.

Dies sind die Felder, die lsof erzeugen kann. Das zuerst aufgeführte einzelne Zeichen ist das Feldkennzeichen.

a Dateizugriffsmodus
c Prozessbefehlsname (alle Zeichen aus der Proc- oder Benutzerstruktur)
C Dateistruktur-Share-Zähler
d Dateizeichencode
D Dateimajor-/Minor-Gerätenummer (0x<hexadezimal>)
f Dateideskriptor
F Dateistrukturadresse (0x<hexadezimal>)
G Dateiflägen (0x<hexadezimal>; Namen, wenn +fg folgt)
g Prozessgruppen-ID
i Dateinode-Nummer
K Task-ID
k Link-Zähler
l Dateisperrzustand
L Prozess-Login-Name
m Marker zwischen wiederholten Ausgaben (wird immer im Wiederholungsmodus ausgewählt)
M der Task-Befehlsname
n Dateiname, Kommentar, Internetadresse
N Knoten-ID (0x<hexadezimal>)
o Dateioffset (0t<dezimal> oder 0x<hexadezimal>, siehe -o o)
p Prozess-ID (wird immer ausgewählt)
P Protokollname
r Rohgerätnummer (0x<hexadezimal>)
R Elternprozess-ID
s Dateigröße (dezimal)
S Dateistream-ID
t Dateityp
T TCP/TPI-Informationen, identifiziert durch Präfixe (das `=` ist Teil des Präfixes):
QR=<Größe der Warteschlange für eingehende Daten>
QS=<Größe der Warteschlange für ausgehende Daten>
SO=<Socket-Optionen und -Werte> (nicht alle Varianten)
SS=<Socket-Status> (nicht alle Varianten)
ST=<Verbindungsstatus>
TF=<TCP-Flags und -Werte> (nicht alle Varianten)
WR=<Fenstergröße für eingehende Daten> (nicht alle Varianten)
WW=<Fenstergröße für ausgehende Daten> (nicht alle Varianten)
(TCP/TPI-Informationen werden nicht für alle unterstützten UNIX-Varianten gemeldet. Die Hilfeausgabe -h oder -? für die Option -T zeigt, welche TCP/TPI-Berichte angefordert werden können.)
u Prozess-Benutzer-ID
z Solaris 10 und höher Zonennamen
Z SELinux-Sicherheitskontext (wird unterdrückt, wenn SELinux deaktiviert ist)
0 Verwenden Sie das NUL-Feldterminatorzeichen anstelle von NL
19 dialektspezifische Feldkennzeichen (Die Ausgabe von -F? identifiziert die Informationen, die in dialektspezifischen Feldern gefunden werden können.)

Sie können Online-Hilfeinformationen zu diesen Zeichen und ihren Beschreibungen erhalten, indem Sie die Option -F? angeben. (Entfernen Sie das ?-Zeichen, wie es Ihre Shell erfordert.) Zusätzliche Informationen zum Feldinhalt finden Sie im Abschnitt AUSGABE. Als Beispiel wählt \-F pcfn'' die Prozess-ID (p), den Befehlsnamen (c), den Dateideskriptor (f) und den Dateinamen (n) mit einem NL-Feldterminator aus; \-F pcfn0'' wählt die gleiche Ausgabe mit einem NUL (000)-Feldterminator aus. Lsof erzeugt nicht alle Felder für jeden Prozess oder jedes Dateiset, sondern nur die, die verfügbar sind. Einige Felder schließen sich gegenseitig aus: Datei-Gerätezeichen und Datei-Haupt-/Nebengerätenummern; Datei-Inode-Nummer und Protokollname; Dateiname und Stream-Identifikation; Dateigröße und Offset. Eines oder das andere Mitglied dieser sich gegenseitig ausschließenden Mengen wird in der Feldausgabe angezeigt, aber nicht beides. Normalerweise beendet lsof jedes Feld mit einem NL (012)-Zeichen. Das 0 (Null)-Feld-Identifikatorzeichen kann verwendet werden, um das Feldterminatorzeichen in ein NUL (000) zu ändern. Ein NUL-Terminator kann einfacher mit xargs (1) oder mit Programmen verarbeitet werden, deren Anführungsmechanismen möglicherweise nicht mit dem Bereich der Zeichen in der Feldausgabe zurechtkommen. Wenn der NUL-Feldterminator verwendet wird, beendet lsof jedes Prozess- und Dateiset mit einem NL (012). Drei Hilfsmittel zur Erstellung von Programmen, die die Feldausgabe von lsof verarbeiten können, sind in der lsof-Distribution enthalten. Das erste ist eine C-Headerdatei, lsof_fields.h, die Symbole für die Feldidentifikatorzeichen, Indizes zum Speichern in einer Tabelle und Erklärungstrings enthält, die in Programme kompiliert werden können. Lsof verwendet diese Headerdatei.


Die zweite Hilfe ist eine Reihe von Beispielskripten, die Feld-Ausgaben verarbeiten, und zwar in awk, Perl 4 und Perl 5. Sie befinden sich im Unterverzeichnis „scripts“ der lsof-Distribution.

Die dritte Hilfe ist die C-Bibliothek, die für die lsof-Testsuite verwendet wird. Die Testsuite ist in C geschrieben und verwendet Feld-Ausgaben, um die korrekte Funktion von lsof zu validieren. Die Bibliothek befindet sich in der Datei „tests/LTlib.c“ der lsof-Distribution. Die Bibliothek verwendet die erste Hilfe, die Header-Datei „lsof_fields.h“.

BLÖCKE UND ZEITÜBERSCHREITUNGEN

Lsof kann durch einige Kernel-Funktionen blockiert werden, die es verwendet – lstat(2), readlink(2) und stat(2). Diese Funktionen bleiben im Kernel hängen, zum Beispiel wenn die Hosts, auf denen sich die gemounteten NFS-Dateisysteme befinden, nicht erreichbar sind.

Lsof versucht, diese Blockaden mit Timern und Kindprozessen zu unterbrechen, aber diese Techniken sind nicht vollständig zuverlässig. Wenn lsof eine Blockade erfolgreich unterbricht, wird dies mit einer Fehlermeldung gemeldet. Die Meldungen können mit den Optionen -t und -w unterdrückt werden.

Der Standardwert für die Zeitüberschreitung kann mit den Optionen -h oder -? angezeigt werden, und er kann mit der Option -S [t] geändert werden. Das Minimum für t beträgt zwei Sekunden, aber Sie sollten kleine Werte vermeiden, da eine langsame Systemreaktion dazu führen kann, dass kurze Zeitüberschreitungen unerwartet ablaufen und lsof möglicherweise stoppen, bevor es eine Ausgabe erzeugen kann.

Wenn lsof während des Zugriffs auf Informationen über gemountete Dateisysteme eine Blockade unterbrechen muss, setzt es normalerweise fort, obwohl weniger Informationen über geöffnete Dateien angezeigt werden können.

Lsof kann auch so konfiguriert werden, dass es den Schutz durch Timer und Kindprozesse vermeidet, wenn die Kernel-Funktionen verwendet werden, die zu Blockaden führen könnten, indem die Option -O angegeben wird. Dies ermöglicht zwar, dass lsof mit weniger Overhead startet, setzt lsof aber vollständig den Kernel-Situationen aus, die es blockieren könnten. Verwenden Sie diese Option mit Vorsicht.

VERMEIDUNG VON KERNEL-BLOCKADEN

Sie können die Option -b verwenden, um lsof mitzuteilen, dass es Kernel-Funktionen, die zu Blockaden führen würden, vermeiden soll. Einige Vorsichtsmaßnahmen sind zu beachten.

Erstens erfordert die Verwendung dieser Option in der Regel, dass Ihr System alternative Geräte-Nummern anstelle der Geräte-Nummern bereitstellt, die lsof normalerweise mit den Kernel-Funktionen lstat(2) und stat(2) abrufen würde. Weitere Informationen zu alternativen Geräte-Nummern finden Sie im Abschnitt ALTERNATIVE GERÄTE-NUMMERN.

Zweitens können Sie keine Namen für lsof angeben, nach denen es suchen soll, es sei denn, es handelt sich um Dateisystemnamen. Dies liegt daran, dass lsof die Geräte- und Inode-Nummern von Dateien benötigt, die in den lsof-Optionen angegeben sind, und die Option -b verhindert, dass lsof diese abruft. Darüber hinaus hängt die Fähigkeit von lsof, Dateien auf Dateisystemen zu finden, da lsof nur über Geräte-Nummern für die Dateisysteme verfügt, für die Alternativen vorhanden sind, vollständig von der Verfügbarkeit und Genauigkeit der Alternativen ab. Wenn keine Alternativen verfügbar sind oder wenn sie falsch sind, kann lsof keine Dateien auf den angegebenen Dateisystemen finden.


Drittens, wenn die Namen Ihrer Dateisystemverzeichnisse, die lsof aus Ihrer System-Mount-Tabelle erhält, symbolische Links sind, kann lsof diese Links nicht auflösen. Dies liegt daran, dass die Option -b verhindert, dass lsof die Kernel-Funktion readlink(2) verwendet, die zum Auflösen von symbolischen Links dient.

Schließlich führt die Verwendung der Option -b dazu, dass lsof Warnmeldungen ausgibt, wenn es die Kernel-Funktionen verwenden muss, die die Option -b unterbinden soll. Sie können diese Meldungen unterdrücken, indem Sie die Option -w angeben, aber wenn Sie dies tun, werden die alternativen Gerätenummern, die in den Warnmeldungen gemeldet werden, nicht angezeigt.

ALTERNATIVE GERÄTENUMMERN

Auf einigen Systemen kann lsof, wenn es einen Block aufbrechen muss, weil es keine Informationen über ein gemountetes Dateisystem über die Kernel-Funktionen lstat(2) und stat(2) abrufen kann oder weil Sie die Option -b angegeben haben, einige der benötigten Informationen – die Gerätenummer und möglicherweise den Dateisystemtyp – aus der System-Mount-Tabelle erhalten. Wenn dies möglich ist, meldet lsof die abgerufene Gerätenummer. (Sie können die Meldung unterdrücken, indem Sie die Option -w angeben.)

Sie können diesen Prozess unterstützen, indem Sie in Ihrer Mount-Tabelle, die sich in einer Datei /etc/mtab oder /etc/mnttab befindet und ein Optionsfeld enthält, ein Feld dev=xxxx für Mount-Punkte hinzufügen, die dieses Feld nicht in ihren Optionsstrings haben. Beachten Sie: Sie müssen die Datei bearbeiten können – einige Mount-Tabellen, wie z. B. die neueren Solaris /etc/mnttab oder Linux /proc/mounts, sind schreibgeschützt und können nicht geändert werden.

Sie können möglicherweise auch Gerätenummern mit den Optionen +m und +m m angeben, vorausgesetzt, diese werden von Ihrem System unterstützt. Überprüfen Sie die Ausgabe der Optionen -h oder -? von lsof, um festzustellen, ob die Optionen +m und +m m verfügbar sind.

Der Teil xxxx des Feldes ist der hexadezimale Wert der Gerätenummer des Dateisystems. (Weitere Informationen finden Sie im Feld st_dev der Ausgabe der Funktionen lstat(2) und stat(2) für die entsprechenden Werte für Ihre Dateisysteme.) Hier ist ein Beispiel aus einer Sun Solaris 2.6 /etc/mnttab für ein Dateisystem, das remote über NFS gemountet ist:

nfs  ignore,noquota,dev=2a40001

Es hat einen Vorteil, wenn Sie Einträge dev=xxxx in Ihrer Mount-Tabellendatei haben, insbesondere für Dateisysteme, die von Remote-NFS-Servern gemountet werden. Wenn ein Remote-Server abstürzt und Sie die Benutzer identifizieren möchten, indem Sie lsof auf einem seiner Clients ausführen, kann lsof möglicherweise keine Ausgabe von den Funktionen lstat(2) und stat(2) für das Dateisystem abrufen. Wenn es die Gerätenummer des Dateisystems aus der Mount-Tabelle abrufen kann, kann es die auf dem abgestürzten NFS-Server geöffneten Dateien anzeigen.

Einige Systeme, die keine ASCII-Datei /etc/mtab oder /etc/mnttab für die Mount-Tabelle verwenden, stellen möglicherweise dennoch eine alternative Gerätenummer in ihren internen Mount-Tabellen bereit. Dazu gehören AIX, Apple Darwin, FreeBSD, NetBSD, OpenBSD und Tru64 UNIX. Lsof weiß, wie es die alternative Gerätenummer für diese Systeme abrufen kann, und verwendet sie, wenn sein Versuch, das Dateisystem mit lstat(2) oder stat(2) zu verarbeiten, blockiert wird.


Wenn Sie sich nicht sicher sind, ob Ihr Dialekt alternative Geräte­nummern für Dateisysteme aus seiner Mount-Tabelle bereitstellt, verwenden Sie diesen lsof-Befehl, um zu sehen, ob er alternative Geräte­nummern meldet:

lsof -b

Suchen Sie nach Warnmeldungen im Standardfehler, die mit "Annahme vondev=xxxxaus ..." beginnen.

KERNEL-NAMEN-CACHE

^ sof kann den Kernel-Namen-Cache untersuchen oder andere Kernel-Funktionen (z. B. die ADVFS-Funktion tag_to_path() unter Tru64 UNIX) in einigen Dialekten für die meisten Dateisystemtypen verwenden, mit Ausnahme von AFS, und kürzlich verwendete Pfadnamen-Komponenten daraus extrahieren. (AFS-Dateisystem-Pfad-Nachschlagen verwenden nicht den Kernel-Namen-Cache; einige Solaris-VxFS-Dateisystem-Operationen verwenden ihn offenbar ebenfalls nicht.)

^ sof meldet die vollständigen Pfade, die es in der Spalte NAME findet. Wenn lsof nicht alle Komponenten in einem Pfad melden kann, meldet es in der Spalte NAME den Dateisystemnamen, gefolgt von einem Leerzeichen, zwei Bindestrichen, einem weiteren Leerzeichen und den gefundenen Pfadnamen-Komponenten, die durch das Zeichen / getrennt sind.

Wenn lsof im Wiederholungsmodus ausgeführt wird, d. h. mit der Option -r, kann sich der Umfang, in dem es Pfadnamen-Komponenten für dieselbe Datei melden kann, von Zyklus zu Zyklus ändern. Das liegt daran, dass andere laufende Prozesse dazu führen können, dass der Kernel Einträge aus seinem Namen-Cache entfernt und durch andere ersetzt.

Die Verwendung des Kernel-Namen-Cache zur Identifizierung der Pfade von Dateien kann dazu führen, dass lsof unter bestimmten Umständen falsche Komponenten meldet. Dies kann passieren, wenn der Kernel-Namen-Cache Gerät- und Knoten-Nummer als Schlüssel verwendet (z. B. SCO OpenServer) und ein Schlüssel in einem sich schnell ändernden Dateisystem wiederverwendet wird. Wenn der Kernel des UNIX-Dialekts den Namen-Cache-Eintrag für eine Datei nicht löscht, wenn sie deinstalliert wird, findet lsof möglicherweise einen Verweis auf den falschen Eintrag im Cache. Die lsof-FAQ (der FAQ-Abschnitt gibt seinen Speicherort an) enthält weitere Informationen zu dieser Situation.

^ sof kann Pfadnamen-Komponenten für diese Dialekte melden:

FreeBSD
HP-UX
Linux
NetBSD
SCO OpenServer
SCO|Caldera UnixWare
Solaris
Tru64 UNIX

^ sof kann keine Pfadnamen-Komponenten für diese Dialekte melden:

AIX
OpenBSD

Wenn Sie wissen möchten, warum lsof keine Pfadnamen-Komponenten für einige Dialekte melden kann, lesen Sie die lsof-FAQ (der FAQ-Abschnitt gibt seinen Speicherort an).

GERÄTE-CACHE-DATEI

Die Untersuchung aller Elemente der /dev- oder /devices-Knotenstruktur mit den Funktionen stat(2) kann zeitaufwändig sein. Darüber hinaus ändern sich die Informationen, die lsof benötigt - Geräte­nummer, Inode-Nummer und Pfad - selten.

Daher führt lsof normalerweise eine ASCII-Textdatei mit zwischengespeicherten /dev- oder /devices-Informationen (Ausnahme: das /proc-basierte Linux lsof, wo dies nicht erforderlich ist). Der lokale Systemadministrator, der lsof erstellt, kann steuern, wie der Pfad zur Geräte-Cache-Datei gebildet wird, und zwischen diesen Optionen auswählen:


Pfad aus der Option -D;
Pfad aus einer Umgebungsvariablen;
Systemweiter Pfad;
Persönlicher Pfad (Standard);
Persönlicher Pfad, der durch eine Umgebungsvariable geändert wurde.

Sehen Sie sich die Ausgabe der Hilfsoptionen -h, -D? oder -? an, um den aktuellen Zustand der Geräte-Cache-Unterstützung zu überprüfen. Die Hilfsausgabe listet den Standardpfad zur Geräte-Cache-Datei auf, der für den aktuellen Aufruf von lsof gilt. Die Ausgabe der Option -D? listet die Pfade zu den schreibgeschützten und beschreibbaren Geräte-Cache-Dateien, die Namen aller relevanten Umgebungsvariablen und das Format des persönlichen Geräte-Cache-Pfads auf.

Lsof kann erkennen, ob die aktuelle Geräte-Cache-Datei versehentlich oder böswillig geändert wurde, indem Integritätsprüfungen durchgeführt werden, einschließlich der Berechnung und Überprüfung einer 16-Bit-Zyklischen Redundanzprüfung (CRC) der Dateiinhalte. Wenn lsof feststellt, dass mit der Datei etwas nicht stimmt, gibt es eine Warnung aus und versucht, die aktuelle Cache-Datei zu entfernen und eine neue Kopie zu erstellen, jedoch nur in einem Pfad, in den der Prozess tatsächlich schreiben kann.

Der Pfad, von dem ein lsof-Prozess versucht, eine Geräte-Cache-Datei zu lesen, ist möglicherweise nicht derselbe wie der Pfad, in den er tatsächlich schreiben kann. Daher kann lsof, wenn es feststellt, dass die Geräte-Cache-Datei aktualisiert werden muss, einen anderen Pfad zum Schreiben wählen als den Pfad, von dem es eine fehlerhafte oder veraltete Version gelesen hat.

Wenn verfügbar, verhindert die Option -Dr das Schreiben einer neuen Geräte-Cache-Datei. (Sie ist immer verfügbar, wenn sie ohne einen Pfadnamen als Argument angegeben wird.)

Wenn ein neues Gerät zum System hinzugefügt wird, muss die Geräte-Cache-Datei möglicherweise neu erstellt werden. Da lsof die mtime der Geräte-Cache-Datei mit der mtime und ctime des /dev- oder /devices-Verzeichnisses vergleicht, erkennt es in der Regel, dass ein neues Gerät hinzugefügt wurde; in diesem Fall gibt lsof eine Warnmeldung aus und versucht, die Geräte-Cache-Datei neu zu erstellen.

Immer wenn lsof eine Geräte-Cache-Datei schreibt, setzt es die Eigentümerschaft auf die tatsächliche UID des ausführenden Prozesses und die Berechtigungsmodi auf 0600, wodurch das Lesen und Schreiben auf den Eigentümer der Datei beschränkt wird.

LSOF-BEREchtigungen, die den Zugriff auf die Geräte-Cache-Datei beeinflussen

Zwei Berechtigungen der lsof-Datei beeinflussen deren Fähigkeit, auf Geräte-Cache-Dateien zuzugreifen. Die Berechtigungen werden vom lokalen Systemadministrator bei der Installation von lsof festgelegt.

Die erste und seltenere Berechtigung ist setuid-root. Sie wird wirksam, wenn lsof ausgeführt wird; die effektive UID ist dann root, während die tatsächliche UID (d. h. die des angemeldeten Benutzers) nicht root ist. Die lsof-Distribution empfiehlt, dass Versionen für diese Dialekte mit setuid-root ausgeführt werden.

HP-UX 11.11 und 11.23
Linux

Die zweite und häufigere Berechtigung ist setgid. Sie wird wirksam, wenn die effektive Gruppen-ID (GID) des lsof-Prozesses auf eine Gruppe gesetzt wird, die auf die Kernel-Speichergeräte zugreifen kann, z. B. kmem'',sys'' oder ``system''.


Ein lsof-Prozess, der über die setgid-Berechtigung verfügt, gibt diese Berechtigung in der Regel ab, nachdem er auf die Kernel-Speichergeräte zugegriffen hat. Wenn dies geschieht, kann lsof eine flexiblere Bildung von Geräte-Cache-Pfaden zulassen. Die lsof-Distribution empfiehlt, dass Versionen für diese Varianten mit setgid ausgeführt werden und dass ihnen die Möglichkeit gegeben wird, die ^ etgid-Berechtigung aufzugeben.

AIX 5.[12] und 5.3-ML1
Apple Darwin 7.x Power Macintosh-Systeme
FreeBSD 4.x, 4.1x, 5.x und [6789].x für x86-basierte Systeme
FreeBSD 5.x, [6789].x und 1[012].8 für Alpha-, AMD64- und Sparc64-basierte Systeme
HP-UX 11.00
NetBSD 1.[456], 2.x und 3.x für Alpha-, x86- und SPARC-basierte Systeme
OpenBSD 2.[89] und 3.[0-9] für x86-basierte Systeme
SCO OpenServer Release 5.0.6 für x86-basierte Systeme
SCO|Caldera UnixWare 7.1.4 für x86-basierte Systeme
Solaris 2.6, 8, 9 und 10
Tru64 UNIX 5.1

(Hinweis: lsof für AIX 5L und höher benötigt die setuid-root-Berechtigung, wenn die Option -X verwendet wird.)

^ sof für diese Varianten unterstützt keinen Geräte-Cache, daher gelten die für die ausführbare Datei gewährten Berechtigungen nicht für die Geräte-Cache-Datei.

Linux

PFAD DER GERÄTE-CACHE-DATEI AUS DER OPTION -D

Die Option -D bietet begrenzte Möglichkeiten, den Pfad der Geräte-Cache-Datei anzugeben. Ihre Funktion wird die schreibgeschützten und beschreibbaren Pfade der Geräte-Cache-Datei melden, die lsof verwenden wird.

Wenn die Funktionen -D b, -D r und -D u verfügbar sind, können Sie diese verwenden, um anzufordern, dass die Cache-Datei an einem bestimmten Ort erstellt (b[Pfad]), nur gelesen (aber nicht neu erstellt) (r[Pfad]) oder gelesen und neu erstellt (u[Pfad]) wird. Die Funktionen -D b, -D r und -D u sind unter bestimmten Bedingungen eingeschränkt. Sie sind eingeschränkt, wenn der ^ sof-Prozess mit setuid-root ausgeführt wird. Der mit der Funktion -D r angegebene Pfad ist immer schreibgeschützt, auch wenn er verfügbar ist.

Die Funktionen -D b, -D r und -D u sind auch dann eingeschränkt, wenn der lsof-Prozess mit setgid ausgeführt wird und lsof die setgid-Berechtigung nicht aufgibt. (Siehe den Abschnitt „LSOF-BEREchtigungen, die den Zugriff auf die Geräte-Cache-Datei beeinflussen“, für eine Liste der Implementierungen, die ihre setgid-Berechtigung normalerweise nicht aufgeben.)

Eine weitere -D-Funktion, i (für "ignore"), ist immer verfügbar.

Wenn verfügbar, weist die Funktion -D b lsof an, Geräteinformationen aus dem Kernel mithilfe der Funktion stat(2) zu lesen und eine Geräte-Cache-Datei am angegebenen Pfad zu erstellen.

Wenn verfügbar, weist die Funktion -D r lsof an, die Geräte-Cache-Datei zu lesen, sie aber nicht zu aktualisieren. Wenn ein Pfadargument an -D r angehängt wird, wird der Pfad der Geräte-Cache-Datei angegeben. Die Funktion -D r ist immer verfügbar, wenn sie ohne Pfadnamenargument angegeben wird. Wenn lsof nicht mit setuid-root ausgeführt wird und seine setgid-Berechtigung aufgibt, kann ein Pfadnamenargument an die Funktion -D r angehängt werden.

Wenn verfügbar, weist die Funktion -D u lsof an, zu versuchen, die Geräte-Cache-Datei zu lesen und zu verwenden. Wenn es die Datei nicht lesen kann oder feststellt, dass der Inhalt der Datei falsch oder veraltet ist, liest es Informationen aus dem Kernel und versucht, eine aktualisierte Version der Geräte-Cache-Datei zu schreiben, aber nur an einen Pfad, der für die effektiven und tatsächlichen Benutzer-IDs des lsof-Prozesses als legitim angesehen wird.


GERÄTE-CACHE-PFAD AUS EINER UMGEBUNGSVARIABLEN

Lsofs zweite Wahl für die Geräte-Cache-Datei ist der Inhalt der Umgebungsvariablen LSOFDEVCACHE. Diese Wahl wird vermieden, wenn der lsof-Prozess als setuid-root ausgeführt wird oder die tatsächliche Benutzer-ID (UID) des Prozesses root ist.

    Eine weitere Einschränkung gilt für einen Geräte-Cache-Dateipfad, der aus der Umgebungsvariablen `LSOFDEVCACHE` übernommen wird: `lsof` schreibt keine Geräte-Cache-Datei an den angegebenen Pfad,

wenn der lsof-Prozess seine setgid-Berechtigung nicht aufgibt. (Siehe den Abschnitt "LSOF-BERECHTIGUNGEN, DIE DEN ZUGRIFF AUF DIE GERÄTE-CACHE-DATEI BEEINFLUSSEN" für Informationen zu Implementierungen, die ihre setgid-Berechtigung nicht aufgeben.)

Der lokale Systemadministrator kann die Verwendung der Umgebungsvariablen LSOFDEVCACHE deaktivieren oder ihren Namen bei der Erstellung von lsof ändern. Informationen zum Namen der Umgebungsvariablen finden Sie in der Ausgabe von -D?.

SYSTEMWEITER GERÄTE-CACHE-PFAD

Der lokale Systemadministrator kann bei der Erstellung von lsof einen systemweiten Geräte-Cache-Pfad festlegen. Diese Datei wird in der Regel von einer speziellen Systemadministrationsprozedur erstellt, wenn das System startet oder wenn sich der Inhalt von /dev oder /devices ändert. Wenn definiert, ist dies die dritte Wahl für den Geräte-Cache-Dateipfad von lsof.

Sie können erkennen, ob ein systemweiter Geräte-Cache-Pfad für Ihre lokale Installation verwendet wird, indem Sie die Ausgabe der lsof-Hilfeoption untersuchen, d. h. die Ausgabe der Option -h oder -?.

^ sof schreibt standardmäßig niemals in den systemweiten Geräte-Cache-Pfad. Er muss explizit mit einer -D-Funktion in einer prozeduralen Umgebung angegeben werden, die sich im Besitz von root befindet. Sobald die Datei geschrieben wurde, muss die Prozedur ihre Berechtigungsmodi auf 0644 (Besitzer-Lese- und -Schreibrechte, Gruppen-Lese- und Andere-Lese-Rechte) ändern.

PERSÖNLICHER GERÄTE-CACHE-PFAD (STANDARD)

Der Standard-Geräte-Cache-Dateipfad der lsof-Distribution befindet sich im Home-Verzeichnis der tatsächlichen Benutzer-ID (UID), die lsof ausführt. Dem Home-Verzeichnis wird ein zweites Pfadsegment im Format .lsof_hostname hinzugefügt.

Dies ist die vierte Wahl für den Geräte-Cache-Dateipfad von lsof und in der Regel die Standardeinstellung. Wenn beim Erstellen von lsof ein systemweiter Geräte-Cache-Pfad definiert wurde, wird diese vierte Wahl verwendet, wenn lsof die systemweite Geräte-Cache-Datei nicht finden kann. Dies ist die einzige Situation, in der lsof zwei Pfade beim Lesen der Geräte-Cache-Datei verwendet.

Der Hostname im zweiten Segment ist der Basisname des ausführenden Hosts, wie er von gethostname(2) zurückgegeben wird. Der Basisname ist definiert als die Zeichen vor dem ersten . in der Ausgabe von ^ ethostname(2) oder die gesamte Ausgabe von gethostname(2), wenn sie kein . enthält.

Die Geräte-Cache-Datei gehört der Benutzer-ID und ist nur für diese Benutzer-ID lesbar und beschreibbar, d. h. ihre Modi sind 0600. Jede eindeutige tatsächliche Benutzer-ID auf einem bestimmten Host, die ^ sof ausführt, hat eine eigene Geräte-Cache-Datei. Der Hostname im Pfad unterscheidet Geräte-Cache-Dateien in einem NFS-gemounteten Home-Verzeichnis, in das Geräte-Cache-Dateien von mehreren verschiedenen Hosts geschrieben werden.


Der durch diese Methode erstellte Pfad für die persönliche Cache-Datei des Geräts stellt eine Geräte-Cache-Datei dar, die lsof zu lesen versucht und die bei Nichtvorhandensein oder bei fehlerhaften oder veralteten Inhalten auch zu schreiben versucht.

Die Option -D ohne Pfadnamenargument verhindert das Schreiben einer neuen Geräte-Cache-Datei.

Die Option -D? listet die Formatdefinition zum Erstellen der persönlichen Geräte-Cache-Datei auf. Die in der Formatdefinition verwendeten Konvertierungen werden in der Datei 00DCACHE der lsof-Distribution beschrieben.

MODIFIZIERTER PFAD FÜR DIE PERSÖNLICHE GERÄTE-CACHE-DATEI

Wenn diese Option vom lokalen Systemadministrator beim Erstellen von lsof definiert wird, kann der Inhalt der Umgebungsvariablen LSOFPERSDCPATH verwendet werden, um einen Teil des Pfads für die persönliche Geräte-Cache-Datei hinzuzufügen.

Der Inhalt der Umgebungsvariablen LSOFPERSDCPATH wird an der Stelle im Pfad eingefügt, die vom lokalen Systemadministrator mit der Konvertierung "%p" in der Formatdefinition HASPERSDC des Headers machine.h des jeweiligen Dialekts markiert wurde. (Er wird in der Standard-lsof-Distribution direkt nach dem Home-Verzeichnis platziert.)

Wenn beispielsweise LSOFPERSDCPATH den Wert LSOF enthält, das Home-Verzeichnis /Homes/abe lautet, der Hostname lsof.itap.purdue.edu ist und das Format HASPERSDC das Standardformat ("%h/%p.lsof_%L") ist, lautet der modifizierte Pfad für die persönliche Geräte-Cache-Datei:

/Homes/abe/LSOF/.lsof_vic

Die Umgebungsvariable LSOFPERSDCPATH wird ignoriert, wenn der lsof-Prozess als setuid-root ausgeführt wird oder die tatsächliche Benutzer-ID des Prozesses Root ist.

^ sof schreibt nicht in einen modifizierten Pfad für die persönliche Geräte-Cache-Datei, wenn der lsof-Prozess die setgid-Berechtigung nicht aufgibt. (Siehe den Abschnitt „LSOF-BEREchtigungen, die den Zugriff auf die Geräte-Cache-Datei beeinflussen“ für eine Liste der Implementierungen, die ihre setgid-Berechtigung normalerweise nicht aufgeben.)

Wenn Sie beispielsweise ein Unterverzeichnis von Pfaden für persönliche Geräte-Cache-Dateien erstellen möchten, indem Sie die Umgebungsvariable LSOFPERSDCPATH verwenden, um es zu benennen, und lsof seine setgid-Berechtigung nicht aufgibt, müssen Sie lsof erlauben, Geräte-Cache-Dateien am Standardpfad zu erstellen, und sie dann mit Shell-Befehlen in Ihr Unterverzeichnis verschieben.

Der lokale Systemadministrator kann: diese Option beim Erstellen von lsof deaktivieren; den Namen der Umgebungsvariablen von LSOFPERSDCPATH in etwas anderes ändern; das Format HASPERSDC so ändern, dass der persönliche Pfad an einer anderen Stelle enthalten ist; oder den persönlichen Pfad ganz ausschließen. Wenden Sie sich an die Ausgabe der Option -D?, um den Namen der Umgebungsvariablen und die Formatdefinition HASPERSDC zu erhalten.

DIAGNOSTIK

Fehler werden mit Meldungen in der Standardfehlerausgabe identifiziert.

^ sof gibt eine 1 zurück, wenn ein Fehler festgestellt wurde, einschließlich des Scheiterns beim Auffinden von Befehlsnamen, Dateinamen, Internetadressen oder -dateien, Login-Namen, NFS-Dateien, PIDs, PGIDs oder UIDs, die aufgelistet werden sollen. Wenn die Option -V angegeben wird, gibt lsof die Suchobjekte an, die es nicht finden konnte. Wenn die Option -Q angegeben wird, ignoriert lsof alle Fehler bei der Suche und gibt nur dann einen Fehler zurück, wenn etwas Ungewöhnliches und nicht behebbares passiert.

^ sof gibt Null (0) zurück, wenn keine Fehler festgestellt wurden und entweder die Option -Q angegeben wurde oder Informationen über alle angegebenen Suchargumente aufgelistet werden konnten.

Wenn lsof keinen Zugriff auf /dev (oder /devices) oder eines seiner Unterverzeichnisse öffnen kann oder Informationen über eine Datei darin mit [stat]({filename}../../stat)(2) abrufen kann, gibt es eine Warnmeldung aus und setzt fort. Dass lsof Warnmeldungen über nicht zugängliche Dateien in /dev (oder /devices) ausgeben wird, wird in seiner Hilfsausgabe angezeigt – angefordert mit den Optionen -h oder -? – mit der Meldung:

Inaccessible /dev warnings are enabled.

Die Warnmeldung kann mit der Option -w unterdrückt werden. Sie kann auch vom Systemadministrator während der Kompilierung von lsof durch die Einstellung der Definition WARNDEVACCESS unterdrückt worden sein. In diesem Fall enthält die Ausgabe der Hilfsoptionen die Meldung:

Inaccessible /dev warnings are disabled.

Warnmeldungen über nicht zugängliche Geräte verschwinden normalerweise, nachdem lsof eine funktionierende Gerätecachedatei erstellt hat.

BEISPIELE

Für ein umfangreicheres Beispielset, das ausführlicher dokumentiert ist, siehe die Datei 00QUICKSTART der lsof-Distribution.

Um alle offenen Dateien aufzulisten, verwenden Sie:

lsof

Um alle offenen Internet-, X.25- (HP-UX-) und UNIX-Domänen-Dateien aufzulisten, verwenden Sie:

lsof -i -U

Um alle offenen IPv4-Netzwerkdateien aufzulisten, die vom Prozess mit der PID 1234 verwendet werden, verwenden Sie:

lsof -i 4 -a -p 1234

Wenn es in Ordnung ist, dass die PID 1234 nicht existiert oder dass die PID 1234 keine offenen IPv4-Netzwerkdateien hat, fügen Sie -Q hinzu:

lsof -Q -i 4 -a -p 1234

Unter der Voraussetzung, dass das UNIX-Dialekt IPv6 unterstützt, verwenden Sie, um nur offene IPv6-Netzwerkdateien aufzulisten:

lsof -i 6

Um alle Dateien aufzulisten, die ein beliebiges Protokoll auf den Ports 513, 514 oder 515 des Hosts wonderland.cc.purdue.edu verwenden, verwenden Sie:

lsof -i @wonderland.cc.purdue.edu:513-515

Um alle Dateien aufzulisten, die ein beliebiges Protokoll auf einem beliebigen Port von mace.cc.purdue.edu (cc.purdue.edu ist die Standarddomäne) verwenden, verwenden Sie:

lsof -i @mace

Um alle offenen Dateien für den Login-Namen \`abe' \'`, die Benutzer-ID 1234, den Prozess 456, den Prozess 123 oder den Prozess 789 aufzulisten, verwenden Sie:

lsof -p 456,123,789 -u 1234,abe

Um alle offenen Dateien auf dem Gerät /dev/hd4 aufzulisten, verwenden Sie:

lsof /dev/hd4

Um den Prozess zu finden, der /u/abe/foo geöffnet hat, ohne sich darum zu kümmern, ob keine vorhanden ist, verwenden Sie:

lsof -Q /u/abe/foo

Um eine Aktion nur dann auszuführen, wenn ein Prozess /u/abe/foo geöffnet hat, verwenden Sie:

lsof /u/abe/foo echo "still in use"

Um den Prozessen, die /u/abe/bar geöffnet haben, ein SIGHUP-Signal zu senden, verwenden Sie:

kill -HUP `lsof -t /u/abe/bar`

Um eine beliebige offene Datei, einschließlich einer offenen UNIX-Domänen-Socket-Datei, mit dem Namen /dev/log zu finden, verwenden Sie:

lsof /dev/log

Um Prozesse mit offenen Dateien auf dem NFS-Dateisystem mit dem Namen /nfs/mount/point zu finden, dessen Server nicht erreichbar ist, und unter der Voraussetzung, dass Ihre Mount-Tabelle die Gerätenummer für /nfs/mount/point liefert, verwenden Sie:


lsof -b /nfs/mount/point

Um die vorherige Suche mit unterdrückten Warnmeldungen durchzuführen, verwenden Sie:

lsof -bw /nfs/mount/point

Um die Cache-Datei des Geräts zu ignorieren, verwenden Sie:

lsof -Di

Um die PID und den Befehlsnamen für jeden Prozess, den Dateideskriptor, die Datei-Gerätenummer und die Datei-Inodenummer für jede Datei jedes Prozesses abzurufen, verwenden Sie:

lsof -FpcfDi

Um die Dateien an den Deskriptoren 1 und 3 jedes Prozesses, der den Befehl lsof ausführt, für die Login-ID abe alle 10 Sekunden aufzulisten, verwenden Sie:

lsof -c lsof -a -d 1 -d 3 -u abe -r10

Um das aktuelle Arbeitsverzeichnis von Prozessen aufzulisten, die einen Befehl ausführen, der genau vier Zeichen lang ist und ein 'o' oder 'O' im dritten Zeichen enthält, verwenden Sie diese reguläre Ausdrucksform der Option -c:

lsof -c /^..o.$/i -a -d cwd

Um eine IPv4-Socket-Datei anhand der zugehörigen numerischen Punktnotation-Adresse zu finden, verwenden Sie:

lsof [email protected]

Um eine IPv6-Socket-Datei (wenn das UNIX-Dialekt IPv6 unterstützt) anhand der zugehörigen numerischen Doppelpunktnotation-Adresse zu finden, verwenden Sie:

lsof -i@[0:1:2:3:4:5:6:7]

Um eine IPv6-Socket-Datei (wenn das UNIX-Dialekt IPv6 unterstützt) anhand einer zugehörigen numerischen Doppelpunktnotation-Adresse zu finden, die eine Reihe von Nullen enthält, z. B. die Loopback-Adresse, verwenden Sie:

lsof -i@[::1]

Um eine sich wiederholende Markierungszeile zu erhalten, die die aktuelle Zeit enthält, verwenden Sie:

lsof -rm====%T====

Um der vorherigen Markierungszeile Leerzeichen hinzuzufügen, verwenden Sie:

lsof -r "m==== %T ===="

FEHLER

Da lsof den Kernel-Speicher beim Suchen nach geöffneten Dateien liest, können schnelle Änderungen im Kernel-Speicher zu unvorhersehbaren Ergebnissen führen.

Wenn eine Datei mehrere Dateisperren hat, wird das Statuszeichen der Sperre (nach dem Dateideskriptor) aus der Prüfung der ersten Sperrenstruktur und nicht aus einer Kombination der einzelnen Dateisperren abgeleitet, die durch mehrere Sperrenstrukturen beschrieben werden könnten.

Lsof kann keine Dateien mit restriktiven Zugriffsberechtigungen anhand des Namens suchen, es sei denn, es ist mit Root-Set-UID-Berechtigung installiert. Andernfalls ist es auf die Suche nach Dateien beschränkt, auf die sein Benutzer oder seine Set-GID-Gruppe (falls vorhanden) Zugriff hat.

Die Anzeige der Zieladresse eines Raw-Sockets (z. B. für Ping) hängt vom UNIX-Betriebssystem ab. Einige Dialekte speichern die Zieladresse im Protokollsteuerungsblock des Raw-Sockets, andere nicht.

Lsof kann nicht immer Solaris-Gerätenummern auf die gleiche Weise darstellen, wie es ls(1) tut. Beispielsweise sind die Haupt- und Neben-Gerätenummern, die die Funktionen lstat(2) und stat(2) für das Verzeichnis, auf dem CD-ROM-Dateien eingebunden sind (normalerweise /cdrom), melden, nicht die gleichen wie die, die es für das Gerät meldet, auf dem CD-ROM-Dateien eingebunden sind (normalerweise /dev/sr0). (Lsof meldet die Verzeichnisnummern.)

Die Unterstützung für /proc-Dateisysteme ist nur für BSD- und Tru64-UNIX-Dialekte, Linux und von SYSV R4 abgeleitete Dialekte verfügbar – z. B. FreeBSD, NetBSD, OpenBSD, Solaris, UnixWare.

Einige /proc-Dateielemente – Gerätenummer, Inodenummer und Dateigröße – sind in einigen Dialekten nicht verfügbar. Das Suchen nach Dateien in einem /proc-Dateisystem erfordert möglicherweise, dass der vollständige Pfadname angegeben wird.


Unter Linux werden keine Textdateideskriptoren angezeigt. Alle Einträge für Dateien, die nicht das aktuelle Arbeitsverzeichnis, das Stammverzeichnis oder numerische Deskriptoren sind, werden als Mem-Deskriptoren gekennzeichnet.

Lsof kann keine Tru64 UNIX-benannten Pipes nach Namen durchsuchen, da deren Kernel-Implementierung von lstat(2) eine falsche Gerätenummer für eine benannte Pipe zurückgibt.

Lsof kann unter HP-UX 9.01, 10.20 und 11.00 keine vollständigen oder korrekten Informationen über Sperren liefern, da der Zugriff auf Kerneldaten oder Fehler in den Kerneldaten nicht ausreicht. Einzelheiten finden Sie in den Lsof-FAQs (Der FAQ-Bereich gibt seinen Speicherort an).

Der AIX SMT-Dateityp ist eine Fälschung. Er wird für Dateistrukturen erstellt, deren Typ (15) nicht in der AIX /usr/include/sys/file.h-Headerdatei definiert ist. Eine Möglichkeit, solche Dateistrukturen zu erstellen, besteht darin, X-Clients mit der Umgebungsvariablen DISPLAY auf ":0.0" auszuführen.

Die Option +/-f[cfn] wird unter /proc-basierendem Linux Lsof nicht unterstützt, da sie keine Kernelstrukturen aus dem Kernel-Speicher liest.

UMGEBUNG

Lsof kann auf diese Umgebungsvariablen zugreifen.

`LANG` definiert eine Sprachumgebung. Weitere Informationen zu anderen Variablen, die anstelle von `LANG` verwendet werden können (z. B. `LC_ALL`, `LC_TYPE` usw.), finden Sie unter `setlocale(3)`.

`LSOFDEVCACHE` definiert den Pfad zu einer Geräte-Cache-Datei. Weitere Informationen finden Sie im Abschnitt „GERÄTE-CACHE-PFAD AUS EINER UMGEBUNGSVARIABLEN“.

`LSOFPERSDCPATH` definiert die mittlere Komponente eines modifizierten Pfads zu einer persönlichen Geräte-Cache-Datei. Weitere Informationen finden Sie im Abschnitt „MODIFIZIERTER PFAD ZU EINEM PERSÖNLICHEN GERÄTE-CACHE“.

FAQ

Häufig gestellte Fragen und deren Antworten (FAQ) sind in der Datei 00FAQ der Lsof-Distribution verfügbar.

Die neueste Version der Datei finden Sie unter:

https://github.com/lsof-org/lsof/blob/master/00FAQ

DATEIEN

`/dev/kmem` Kernel-Virtualspeichergerät

`/dev/mem` physikalisches Speichergerät

`/dev/swap` System-Paging-Gerät

`.lsof_hostname` Lsofs Geräte-Cache-Datei (Das Suffix, Hostname, ist die erste Komponente des Hostnamens, der von `gethostname(2)` zurückgegeben wird).

AUTOREN

Lsof wurde von Victor A. Abell <_> von der Purdue University geschrieben. Seit Version 4.93.0 wird Lsof vom Lsof-org-Team bei GitHub gewartet. Viele andere haben zu Lsof beigetragen. Sie sind in der Datei 00CREDITS der Lsof-Distribution aufgeführt.

VERTEILUNG

Die neueste Version von Lsof ist unter

https://github.com/lsof-org/lsof/releases

verfügbar.

SIEHE AUCH

Nicht alle folgenden Handbuchseiten sind in jeder UNIX-Dialekt vorhanden, auf die Lsof portiert wurde.

^ ccess(2), awk(1), crash(1), fattach(3C), ff(1), fstat(8), fuser(1), gethostname(2), isprint(3), kill(1), localtime(3), lstat(2), modload(8), mount(8), netstat(1), ofiles(8L), open(2), perl(1), ps(1), readlink(2), setlocale(3), stat(2), strftime(3), time(2), uname(1).