GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwenden Sie den Befehl lsof unter Linux

Die Aufgabe des lsof-Befehls besteht darin, "offene Dateien aufzulisten" Im System. Eine geöffnete Datei bedeutet nicht notwendigerweise eine PDF- oder Textdatei, sie enthält Festplattendateien oder Pipes, die von Prozessen im Hintergrund verwendet werden.

Dieser Befehl ist ein praktisches Tool für Betriebssystem-Debugger und Systemadministratoren.

Obwohl der Befehl lsof ein vorinstalliertes Linux-Dienstprogramm ist, können Ubuntu/Debian-Benutzer die Installation mit apt durchführen, wenn Sie es nicht installiert haben:

sudo apt install lsof

Andere Linux-Benutzer können über ihren Standard-Installationsbefehl gefolgt von lsof installieren .

Kommen wir schnell zur Verwendung von lsof Befehl:

Alle geöffneten Dateien im System auflisten

Indem wir den Befehl lsof ohne Optionen ausführen, können wir alle geöffneten Dateien im System auflisten. Dadurch wird das Terminal mit Unmengen von Daten gespült. Daher ist es ratsam, less zu verwenden Befehl, der die von jedem Befehl geworfenen Daten begrenzt

sudo lsof | less

Durch Drücken der 'ENTER' oder die Pfeiltaste nach unten, können wir zum Ende der Liste navigieren.

Jede Datei in der Ausgabe enthält wichtige Informationen über ihren Typ und ihre Verwendung.

  • BEFEHL – Der Linux-Befehl, der dem Prozess zugeordnet ist, der für das Öffnen der Datei verantwortlich ist.
  • PID – Prozess-ID des Prozesses, der die Datei enthält.
  • TID – Die Thread-ID für den jeweiligen Prozess.
  • BENUTZER – Der Linux-Benutzer, der den Prozess verwaltet.
  • FD – Dateideskriptor, der vom Prozess verwendet wird, um der Datei zuzuordnen.
    • cwd – aktuelles Arbeitsverzeichnis
    • rtd – Wurzelverzeichnis
    • txt – ein Textprogramm wie Code
    • Speicher – speicherabgebildete Datei
  • TYP – Der Typ der Datei
    • REG – Normale Datei
    • DIR – Verzeichnis
    • CHR – Zeichendatei
    • LINK – Datei mit symbolischem Link
  • GERÄT – Die zur Datei gehörigen Gerätenummern.
  • GRÖSSE/AUS – Die Größe der Datei oder ihr Offset in Bytes.
  • KNOTEN – Die Inode-Nummer.
  • NAME – Der Name der Datei.

Hinweis: Einige Informationen wie Inode oder Gerätenummer werden möglicherweise unkenntlich gemacht, wenn der Befehl nicht mit Root-Berechtigungen ausgeführt wird.

Wir können mehr über die Ausgabe in den Handbuchseiten erfahren, auf die vom Terminal aus zugegriffen werden kann, indem man man lsof.

ausführt

Alle geöffneten Dateien eines bestimmten Benutzers mit dem Befehl lsof auflisten

Die lsof Der Befehl unterstützt viele Optionen, die angewendet werden können, um die geöffneten Dateien zu filtern. Einer davon ist -u Option zum Anzeigen geöffneter Dateien für einen bestimmten Benutzer.

sudo lsof -u <USER_NAME> | less

Die dritte Spalte basiert auf dem Benutzer, der für das Öffnen der Datei verantwortlich ist. Ähnlich wie bei der Basisausgabe ist das Terminal mit bedeutungslosen Daten überfüllt und verwendet daher less Befehl wird empfohlen.

Geöffnete Dateien in einem bestimmten Verzeichnis auflisten

Dateien existieren innerhalb eines Verzeichnisses, daher ist es ziemlich trivial, dass wir offene Dateien in einem bestimmten Verzeichnis extrahieren können.

lsof +D <DIR_NAME>

In der obigen Abbildung haben wir die Datei aufgelistet, die derzeit im Ordner Dokumente geöffnet ist. Die geöffnete Datei ist eine normale C++-Datei.

Geöffnete Dateien in einem bestimmten Dateisystem mit dem Befehl lsof auflisten

Anstelle eines einzelnen Verzeichnisses lsof Der Befehl kann geöffnete Dateien aus einem bestimmten Dateisystem auflisten. Dies wird erreicht, indem der Name des Dateisystems nach lsof gesetzt wird Befehl.

lsof <FILE_SYSTEM>

In der obigen Abbildung zeigen wir die geöffneten Dateien im Dateisystem /proc.

Geöffnete Dateien nach einem bestimmten Prozess auflisten

Anhand der Prozess-IDs können wir die geöffneten Dateien filtern. Dies kann mit Hilfe von -p erfolgen Option.

lsof -p <PID>

Das obige Snippet des Terminals zeigt die Liste der offenen Dateien für den Prozess mit der PID 3404.

Hinweis: Das Caret-Symbol (^) wird verwendet, um die Parameter in lsof zu negieren Befehl. Zum Beispiel lsof -p ^3404 , zeigt die Liste der geöffneten Dateien für alle PIDs außer 3404 an.

Geöffnete Netzwerkdateien auflisten

Linux speichert eine Reihe von Netzwerkdateien zum Speichern von IP-Adressen oder Netzwerkschnittstellenkonfigurationen. Solche offenen Dateien können mit -i herausgefiltert werden Flagge.

lsof -i 

Diese Dateien haben bestimmte Eigenschaften wie die Arten von Netzwerkprotokollen. Die geöffneten Dateien können weiter mit bestimmten Parametern gefiltert werden, wie:

  • ‘4’ – Die Netzwerkdateien für IPv4
  • ‘6’ – Die Netzwerkdateien für IPv6
  • „TCP“ – Die Netzwerkdateien für TCP
  • ‚UDP‘ – Die Netzwerkdateien für UDP
  • ‘TCP:25‘ – Die Netzwerkdateien für TCP mit Portnummer 25
  • ‘TCP:1-25‘ – Die Netzwerkdateien für TCP mit Portnummern von 1 bis 25

Zum Beispiel:

lsof -i 6

Verwenden des lsof-Befehls zum Suchen geöffneter Dateien auf der Grundlage des Befehls

Bei Tausenden geöffneter Dateien im System scheint es unmöglich, linear nach einem bestimmten Befehl zu suchen. Daher ist die lsof Befehl hat den -c Option zum Herausfiltern offener Dateien auf der Grundlage des Befehls.

lsof -c <COMMAND>

Schlussfolgerung

Die lsof Der Befehl unterstützt viele Optionen, die beim Debuggen und Beheben von Systemproblemen effektiv sind. Interessierte Leser können die Handbuchseiten über das Terminal aufrufen, indem sie man lsof ausführen , um mehr über die Privilegien und die Ausgabe des Befehls zu erfahren.

Fühlen Sie sich frei, unten für Fragen oder Feedback zu kommentieren.


Linux
  1. So verwenden Sie den Disown-Befehl unter Linux

  2. So verwenden Sie den md5sum-Befehl unter Linux

  3. So verwenden Sie den Tar-Befehl unter Linux

  4. So verwenden Sie den Su-Befehl unter Linux

  5. So verwenden Sie den tar-Befehl unter Linux

So verwenden Sie einen Dateibefehl unter Linux

So verwenden Sie den Befehl sysctl unter Linux

So verwenden Sie den Befehl zum Herunterfahren von Linux

So verwenden Sie den SCP-Befehl unter Linux

Wie verwende ich den Gzip-Befehl unter Linux?

So verwenden Sie den Linux-Befehl shred