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

lsof:Befehl nicht gefunden

Manchmal sind wir mit Situationen konfrontiert, in denen wir eine Festplatte nicht aushängen können, da sie besagt, dass die Dateien verwendet werden, aber wir nicht verstehen können, auf welche Datei sie sich bezieht. In solchen Situationen können wir überprüfen, welche Dateien von welchem ​​Prozess auf dem System geöffnet sind.

Dies kann mit dem Befehl lsof erfolgen, was Open Files auflisten bedeutet. Da Linux alles, einschließlich Verzeichnisse, Geräte, Sockets und so weiter, als Dateien betrachtet, können wir lsof verwenden, um alle geöffneten Dateien einfach zu identifizieren.

Wenn wir einfach lsof ausführen, listet es alle geöffneten Dateien auf, die zu einem aktiven Prozess auf dem System gehören. Wenn die Ausgabe lang ist, können wir den Befehl less verwenden, um durch die Ausgabe zu scrollen:

# lsof | less

Die angezeigte Ausgabe enthält Spalten wie Befehl, PID, Benutzer, FD, Typ, Gerät usw., um die Dateien besser zu verstehen. Die FD-Spalte enthält Informationen zur Dateibeschreibung, z. B. das aktuelle Arbeitsverzeichnis (CWD), das Stammverzeichnis (RTD), den Programmtext (TXT) und so weiter. Wenn die FD-Spalte Informationen wie 0u, 1u usw. enthält, steht die Zahl für den eigentlichen Dateideskriptor und das Alphabet für die verschiedenen Modi (Lesezugriff, Schreibzugriff und Lese-/Schreibzugriff).

wenn Sie beim Ausführen des Befehls lsof auf den folgenden Fehler stoßen:

lsof: command not found

Sie können das folgende Paket gemäß Ihrer Wahl der Distribution installieren.

Verteilung Befehl
OS X brew install lsof
Debian apt-get install lsof
Ubuntu apt-get install lsof
Alpin apk lsof hinzufügen
Arch Linux pacman -S lsof
Kali-Linux apt-get install lsof
CentOS yum installiere lsof
Fedora dnf installiere lsof
Raspbian apt-get install lsof

Häufig verwendete lsof-Optionen

  • -c x :Nur Dateien anzeigen, die von Prozessen geöffnet wurden, deren ausführbare Datei mit dem/den durch x angegebenen Zeichen beginnt.
  • -i x :Anstatt geöffnete Dateien anzuzeigen, zeigen Sie Sockets an, deren Internetadresse x ist. Wenn x nicht angegeben ist, alle IP-Verbindungen anzeigen. Dies entspricht funktional netstat –anp.
  • -u Benutzername :Zeigt nur die Dateien an, die Benutzername geöffnet hat.
  • -P :Portnummern nicht in Portnamen umwandeln (z. B. 25 statt smtp anzeigen).

lsof-Befehlsbeispiele

Durch einfaches Ausführen der lsof-Befehle erhalten wir eine Liste aller geöffneten Dateien auf dem System. Durch Verwendung der Option -u und Angabe des Benutzernamens erhalten wir eine Liste der geöffneten Dateien für einen bestimmten Benutzer. Wenn wir die Option -i verwenden und eine Portnummer angeben, erhalten wir Informationen über jeden Prozess, der auf diesem Port läuft. Wenn wir sowohl die Optionen -i als auch -u mit einem bestimmten Benutzernamen verwenden, erhalten wir Informationen über die Dateien und Befehle, auf die dieser Benutzer zugreift.

1. Finden Sie die Prozesse, die eine bestimmte Datei geöffnet haben:

# lsof path/to/file

2. Finden Sie den Prozess, der einen lokalen Internetport geöffnet hat:

# lsof -i :port

3. Nur Prozess-ID (PID) ausgeben:

# lsof -t path/to/file

4. Dateien auflisten, die vom angegebenen Benutzer geöffnet wurden:

# lsof -u username

5. Dateien auflisten, die durch den angegebenen Befehl oder Prozess geöffnet wurden:

# lsof -c process_or_command_name

6. Auflisten von Dateien, die von einem bestimmten Prozess geöffnet wurden, unter Angabe seiner PID:

# lsof -p PID

7. Offene Dateien in einem Verzeichnis auflisten:

# lsof +D path/to/directory

8. Suchen Sie den Prozess, der einen lokalen IPv6-TCP-Port abhört, und konvertieren Sie keine Netzwerk- oder Portnummern:

# lsof -i6TCP:port -sTCP:LISTEN -n -P

9. Listen Sie Prozesse auf, die Ihr Home-Verzeichnis geöffnet haben:

# lsof ~

10. Listen Sie alle geöffneten Dateien in Ihrem Home-Verzeichnis auf:

# lsof +D

11. Listen Sie die Dateien auf, die von Prozessen geöffnet wurden, deren Namen mit „i“ beginnen und deren Besitzer „geek“ ist:

# lsof -a -c i -u geek

12. Dateien über TCP-Port 80 auflisten, alle zwei Sekunden wiederholen, bis lsof beendet wird:

# lsof -i TCP:80 -r 2

Schlussworte

lsof listet offene Dateien auf. Da alles in Linux eine Datei ist, kann Ihnen dieses Tool eine fantastische Menge an Informationen über Ihr laufendes System liefern. Es wird hauptsächlich verwendet, um festzustellen, welche Prozesse welche Dateien geöffnet haben, aber es kann unter anderem auch zum Anzeigen von TCP- und UDP-Verbindungsinformationen verwendet werden.


Linux
  1. ifrename:Befehl nicht gefunden

  2. netstat:Befehl nicht gefunden

  3. kubectl:Befehl nicht gefunden

  4. tvservice:Befehl nicht gefunden

  5. id:Befehl nicht gefunden

aws-shell:Befehl nicht gefunden

dnf:Befehl nicht gefunden

entpacken:Befehl nicht gefunden

bc:Befehl nicht gefunden

dpkg:Befehl nicht gefunden

ln:Befehl nicht gefunden