Auflisten der von einem Prozess in Linux geöffneten Dateien

Heute werden wir das Terminal verwenden, um die Dateien aufzulisten, die von einem Prozess in Linux geöffnet wurden . Dies ist eine sehr häufige Aufgabe, der wir uns früher oder später stellen müssen, wenn wir Linux-Server verwalten, um besser verhindert zu werden.

In meinem Fall ist die Notwendigkeit entstanden, die von einem Prozess geöffneten Dateien aufzulisten, weil ich herausfinden musste, wo ein Dämon seine Aktivität aufzeichnet . Diese Aktivität wusste, dass er es in einer Datei aufzeichnete, aber er wusste nicht, wo es sich befand. Also machte ich mich an die Arbeit und es war, als der Befehl lsof erschien, um das Problem zu beheben.

So listen Sie die Dateien auf, die von einem Prozess unter Linux mit dem Befehl lsof geöffnet wurden.

Wie ich erwartet hatte, werden wir den Befehl lsof , der in allen Linux-Distributionen, * BSD usw. verfügbar ist. Es ist ein sehr flexibler Befehl, der uns mehr als nur beeilen kann.

Die grundlegendste Verwendung ist die Ausführung des Befehls sudo lsof und es wird eine Liste mit allen Dateien erstellt, die von Prozessen geöffnet wurden . Diese Liste ist normalerweise sehr umfangreich, daher müssen wir sie filtern, um das Gesuchte zu finden, aber wir werden es später sehen.

Grundlage für das Verständnis der Ausgabe des Befehls lsof.

Wenn wir uns die Ausgabe des Befehls lsof ansehen, werden die Informationen in verschiedenen Spalten angezeigt. Die meisten Spalten erkennen ihre Bedeutung intuitiv (pid, user, name usw.) , andere (FD, Type usw.) sind möglicherweise etwas seltsam, daher werden wir ihre Bedeutung schnell erläutern.

In der Spalte FD werden die Dateideskriptoren (File Descriptor) angezeigt . Die möglichen Werte von FD sind:

  • cwd : verweist auf das aktuelle Arbeitsverzeichnis .
  • txt : verweist auf eine Textdatei.
  • mem : Verweis auf eine Speicherzuordnungsdatei.
  • mmap : bezieht sich auf ein zugeordnetes Speichergerät.
  • Nummer : Manchmal wird eine Nummer angezeigt, die sich auf den Dateideskriptor bezieht. Dieser Nummer folgen die Buchstaben r (Datei nur zum Lesen öffnen) , w (Datei zum Schreiben öffnen) oder u (Datei zum Lesen und Schreiben öffnen) .

Auf der anderen Seite kann die Spalte TYPE die folgenden Werte anzeigen:

  • REG : reguläre Datei.
  • DIR : Verzeichnis.
  • FIFO : First In First Out (zuerst rein, zuerst raus) .
  • CHR : Sonderzeichendatei.
See also  Analysieren Sie Netzwerkverbindungen mit dem Befehl ss, netstat replacement

Es gibt weitere Werte, die FD- und TYPE-Coulmnas annehmen können, aber in diesem Lernprogramm werden nur die am häufigsten verwendeten zusammengefasst. Wenn Sie weitere Informationen benötigen, man lsof die man lsof mit dem Befehl man lsof .

Praktische Beispiele für die Verwendung des Befehls lsof.

Wir werden eine Reihe von Beispielen sehen, die regelmäßig bei Systemadministrationsaufgaben verwendet werden.

Listet die Dateien auf, die von einem bestimmten Prozess geöffnet wurden.

Um die von einem bestimmten Prozess geöffneten Dateien aufzulisten, müssen wir zuerst Ihre PID herausfinden. Der einfachste Weg , die PID eines Prozesses zu ermitteln, indem man seinen Namen kennt, ist der pidof nombre_proceso Befehl pidof nombre_proceso .

Als Beispiel werden wir uns vorstellen, dass wir die PID des MySQL-Serverprozesses herausfinden wollen, für den ich den pidof mysqld . Dieser Befehl gibt die Nummer der PID zurück, von der wir als Beispiel annehmen, dass sie 1009 .

Sobald ich die PID herausgefunden habe, muss ich nur den lsof -p PID Befehl lsof -p PID ausführen, der durch die Übertragung auf unser Beispiel sudo lsof -p 1009 .

Dieser Befehl wird am häufigsten verwendet und ermöglicht es mir , die Pfade der Protokolldateien eines Apache- oder Nginx- Servers schnell zu ermitteln (es ist erforderlich, lsof mit Root-Berechtigungen auszuführen) .

Listet die Dateien auf, die von einem bestimmten Benutzer geöffnet wurden.

Dank dieses Befehls können wir auch die Dateien auflisten, die von einem bestimmten Benutzer geöffnet wurden . In diesem Fall lsof -u nombre_usuario auszuführende Befehl lsof -u nombre_usuario .

Als Beispiel listen wir alle Dateien auf, die vom Benutzer www-data geöffnet wurden und die üblicherweise auf Apache-Servern mit dem Befehl sudo lsof -u www-data .

Listen Sie die Prozesse auf, die eine bestimmte Datei geöffnet haben.

Manchmal kennen wir den Pfad der geöffneten Datei und müssen herausfinden, welcher Prozess diese Datei geöffnet hat. In diesem Fall lsof /ruta/ejemplo/archivo der Befehl lsof /ruta/ejemplo/archivo .

Wir werden ein Beispiel geben, in dem wir herausfinden, welcher Prozess die Datei /var/log/apache2/access.log geöffnet hat. /var/log/apache2/access.log sind /var/log/apache2/access.log der oder die Prozesse, die einem Apache-Server entsprechen. In diesem Fall sudo lsof /var/log/apache2/access.log der Befehl sudo lsof /var/log/apache2/access.log .

Liste geöffneter Dateien in einem Verzeichnis.

Eine weitere interessante Option besteht darin, alle geöffneten Dateien aufzulisten, die sich im selben Verzeichnis befinden. Der auszuführende Befehl wäre lsof +D /ruta/ejemplo/directorio/ .

Auf diese Weise können wir einen sehr nützlichen Befehl ausführen, um die offenen Protokolldateien des Systems herauszufinden. Dazu müssen wir nur den Befehl sudo lsof +D /var/log/ ausführen.

See also  Unterschiede zwischen einem Proxy und einem VPN

Alle Netzwerk- und Internetdateien auflisten.

Ein Prozess kann nicht nur eine Datei oder einen Ordner öffnen, sondern auch eine Verbindung, einen Socket, einen Stream usw. Mit dem folgenden Befehl können wir alle offenen Netzwerk- und Internetdateien auflisten: sudo lsof -i .

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *