Wie finde ich den Dateiversatz einer geöffneten Datei heraus?


26

Mein Problem ist, dass lsof -p pid ich mit die Liste der geöffneten Datei eines Prozesses herausfinden kann, dessen Prozess-ID pid ist. Aber gibt es eine Möglichkeit, den Dateiversatz jeder Datei, auf die zugegriffen wird, herauszufinden?

Bitte geben Sie mir einige Vorschläge?

Antworten:


37

Unter Linux finden Sie die Position der Dateideskriptornummer Ndes Prozesses PIDin /proc/$PID/fdinfo/$N. Beispiel:

$ cat /proc/687705/fdinfo/36
pos:    26088
flags:  0100001

Dieselbe Datei kann mithilfe mehrerer Dateideskriptoren mehrmals mit unterschiedlichen Positionen geöffnet werden. Wählen Sie daher die entsprechende Datei aus, falls mehrere vorhanden sind. Verwenden:

$ readlink /proc/$PID/fd/$N

um zu wissen, an welche Datei der entsprechende Dateideskriptor angehängt ist (es handelt sich möglicherweise nicht um eine Datei, in diesem Fall baumelt der Symlink).


1
Ihre Antwort ist großartig.
— Ta Thanh Dinh

12

lsofkann dies mit der -oOption tun .

Unter Linux bezieht es seine Informationen von /proc, sodass Sie sie auch dort abrufen können.


Es ist lange her seit meiner letzten Frage und ich bin schon lange nicht mehr hier. Danke für die Antwort.
— Ta Thanh Dinh

Ich kann bestätigen, dass dies auch funktioniert. Der Offset wird jedoch als HEX angegeben.
— Benjamin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.