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.