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.