Sobes.tech
Middle

Wie kann man in Linux herausfinden, mit welchen Dateien ein Programm gerade arbeitet?

sobes.tech KI

Antwort von AI

Verwenden Sie das Dienstprogramm lsof (offene Dateien auflisten).

# Grundlegende Verwendung von lsof, um eine Liste aller offenen Dateien anzuzeigen
lsof

Um eine Liste der von einem bestimmten Prozess geöffneten Dateien zu erhalten (nach PID):

# Liste der offenen Dateien für den Prozess mit PID 1234 anzeigen
lsof -p 1234

Um eine Liste der von einem bestimmten Befehl geöffneten Dateien zu erhalten (nach Name):

# Liste der offenen Dateien für alle Prozesse mit dem Namen "nginx" anzeigen
lsof -c nginx

Um eine Liste der von einem bestimmten Benutzer geöffneten Dateien zu erhalten:

# Liste der offenen Dateien für den Benutzer "user1" anzeigen
lsof -u user1

Zusätzliche lsof-Flags:

Flag Beschreibung
-i Zeigt Netzwerkverbindungen (Sockets) an
-n IP-Adressen nicht in Hostnamen umwandeln
-P Ports nicht in Dienstnamen umwandeln
-r [N] lsof alle N Sekunden neu starten

Beispiel zur Bestimmung, welcher Prozess eine bestimmte Datei verwendet:

# Welcher Prozess verwendet die Datei /var/log/syslog?
lsof /var/log/syslog

Die Ausgabe von lsof enthält folgende Spalten:

  • COMMAND: Name des Befehls, der den Prozess gestartet hat.
  • PID: Prozess-ID.
  • TID: Thread-ID (falls zutreffend).
  • USER: Benutzername, der den Prozess gestartet hat.
  • FD: Dateideskriptor.
  • TYPE: Dateityp (DIR, REG, FIFO, CHR, BLK, SOCK, etc.).
  • DEVICE: Geräte-ID.
  • SIZE/OFF: Dateigröße oder Offset.
  • NODE: Inode-Nummer.
  • NAME: Dateiname oder Netzwerkadresse.