Es werden ständig eine Reihe von Prozessen im System ausgeführt, in denen auf verschiedene Dateien des Systems zugegriffen wird. Diese Dateien können Festplattendateien, Skripte, Netzwerkhöhlen, Geräte, benannte Pipes und andere sein. Mit „LSOF“ ist es möglich, viele Dinge auszuführen, z. B. Debugging. Es ist auch sehr nützlich für Systemadministratoren, herauszufinden, auf welche Dateien durch die Prozesse zugegriffen werden. Eines der nützlichsten Szenarien, die ich gefunden habe.
Lassen Sie uns ohne weiteres mit „LSOF“ beginnen! Ich gehe davon aus, dass Ihr aktuelles UNIX/Linux.
Welches LSOF
Dies berichtet über den vollständigen Pfad des Befehls, in diesem Fall "LSOF".
"LSOF" -Version
lsof -v
Dies wird über eingehende Versionsinformationen von „LSOF“ berichten, einschließlich des Erstellungsdatums der binären, Compiler-Version, der Compiler-Flags und anderer.
Grundlegende „LSOF“ -Nutzung
Führen Sie "lsof" von selbst aus.
LSOF
Dies meldet eine große Liste aller Dateien, auf die das System zum Zeitpunkt des Ausführens des Befehls zugegriffen wird.
Während alle Felder selbsterklärend sind, werden Sie meistens verwirrt über die Spalten "FD" und "Typ" und deren Werte. Schauen wir sie uns an.
FD: Abkürzung von "Dateideskriptor". Es erfolgt die folgenden Werte.
Es gibt auch andere Werte, die Sie in der Spalte bemerken, wie „1U“, gefolgt von U, R, W usw. Wert. Was bedeuten diese?
Typ: Beschreibt den Dateityp und seine Identifizierung. Die Werte sind wie folgt.
Benutzerspezifische geöffnete Dateien
Linux ist eine brillante Multi-Benutzer-Plattform. Mehrere Benutzer können gleichzeitig auf das System zugreifen und Vorgänge ausführen, für die sie die Erlaubnis haben.
Führen Sie den folgenden Befehl aus, um die Dateien zu überprüfen, auf die von einem bestimmten Benutzer zugegriffen wird.
lsof -u
Um die Benutzer mit einem höheren Rang zu überprüfen.
sudo lsof -u
Wie wäre es, wenn Sie alle Befehle und Dateien überprüfen, auf die ein bestimmter Benutzer zugegriffen hat? Führen Sie die folgenden aus.
lsof -i -u
Auch für Benutzer mit höherem Rang benötigt „LSOF“ das Privileg "Superuser".
sudo lsof -i -u
Portspezifische laufende Prozesse
Wenn Sie alle Prozesse herausfinden, die derzeit einen bestimmten Port verwenden.
lsof -i<46><@hostname|host_address>
:
Wenn Sie beispielsweise alle Programme zum Zugriff auf Port 80 über das TCP/IP -Protokoll überprüfen, führen Sie den folgenden Befehl aus.
lsof -i TCP: 80
Diese Methode kann auch verwendet werden, um alle Prozesse anzuzeigen, die Ports in einem bestimmten Bereich verwenden, z. B. 1 bis 1000. Die Befehlsstruktur ähnelt zuvor mit ein wenig Magie im Port -Zahlenteil.
LSOF -i TCP: 1-1000
Protokollspezifische Prozesse
Hier sind 2 Beispiele, die die Prozesse zeigen, die derzeit die IPv4- und IPv6 -Protokolle verwenden.
lsof -i 4
lsof -i 6
Netzwerkverbindungen auflisten
Der folgende Befehl meldet alle Netzwerkverbindungen aus dem aktuellen System.
lsof -i
Ohne mit ^
Ja, wir können bestimmte Benutzer, Port, FD und andere mit dem Charakter "^" ausschließen. Alles, was Sie tun müssen, ist mit Vorsicht zu verwenden, damit Sie nicht die gesamte Ausgabe durcheinander bringen.
In diesem Beispiel schließen wir alle Prozesse vom Benutzer „Root“ aus.
LSOF -U^Wurzel
Es gibt andere Möglichkeiten, diesen ausgeschlossenen Mechanismus mit „LSOF“ zu verwenden, zum Beispiel mit den Flaggen wie „-c“, „-d“ usw. Nicht alle Flags unterstützen diesen Mechanismus. Aus diesem Grund empfehle ich, eine Demo mit dieser Methode mit einer Flag -Flag auszuprobieren, bevor ich sie in einige Skripte implementieren kann.
PID -Suche
PID ist eine wichtige Eigenschaft eines laufenden Prozesses auf dem System. Es ermöglicht eine feinere Steckdose auf einen bestimmten Prozess. Der Prozessname ist in vielen Situationen nicht sehr hilfreich, da der gleiche binäre Kopien von sich selbst erstellen und parallel eine andere Aufgabe ausführen kann.
Wenn Sie nicht wissen, wie Sie die PID eines Prozesses erhalten, verwenden Sie einfach "PS", um alle laufenden Prozesse aufzulisten und die Ausgabe mit "Grep" mit dem Prozessnamen und/oder den Befehlen zu filtern.
PS -a
Führen Sie nun die Filterung mit "Grep" durch.
ps -a | Grep
Schauen Sie nun heraus.
lsof -p
Auflisten geöffneter Dateien für ein bestimmtes Gerät
Die Funktionalität von „LSOF“ ist nicht nur auf diese Funktionen beschränkt. Sie können auch das Ergebnis von „LSOF“ nach Gerätebasis filtern. Zu diesem Zweck sieht der Befehl ungefähr so aus.
LSOF
Dieser Befehl ist super nützlich, um alle laufenden Prozesse mit ihren Eigentümerinformationen zu finden, die auf ein bestimmtes Dateisystem zugreifen. Wenn Sie Probleme haben, ein Dateisystem zu entschärfen, ist dies der beste Weg, um zu gehen.
LSOF
Liste geöffnete Dateien unter einem Verzeichnis
Ähnlich wie beim vorherigen Beispiel übergeben.
Hinweis: „LSOF“ überprüft das Verzeichnis rekursiv, sodass es Zeit dauern kann.
= lsof +d
Bonus: Beenden Sie alle Benutzeraktivitäten
Seien Sie äußerst vorsichtig mit diesem Teil, da er einfach mit allem durcheinander bringen kann, was ein Benutzer tut. Der folgende Befehl tötet alle laufenden Prozesse eines Benutzers ab.
sudo töten -9 'lsof -t -uAbschließende Gedanken
Die Funktionen von „LSOF“ hören hier nicht einfach auf. Die hier erwähnten sind diejenigen, die wir täglich am meisten brauchen werden. Es gibt viele andere Funktionen von „LSOF“, die nützlich sein können (in bestimmten Fällen natürlich).
Für alle verfügbaren Funktionen und deren Nutzung finden Sie die Mann- und Info -Seiten von „LSOF“.
Mann lsofInfo lsofLSOF -?Genießen!