¿Cómo encontrar el desplazamiento del archivo de un archivo abierto?

26

Mi problema es que lsof -p pid puedo encontrar la lista de archivos abiertos de un proceso cuya identificación de proceso es pid. Pero, ¿hay alguna manera de averiguar el desplazamiento del archivo de cada archivo accedido?

Por favor, dame algunas sugerencias ?

Ta Thanh Dinh
fuente

Respuestas:

38

En Linux, se puede encontrar la posición del número de descriptor de archivo Ndel proceso PIDen /proc/$PID/fdinfo/$N. Ejemplo:

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

El mismo archivo se puede abrir varias veces con diferentes posiciones usando varios descriptores de archivo, por lo que tendrá que elegir el relevante en caso de que haya más de uno. Utilizar:

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

para saber cuál es el archivo al que se adjunta el descriptor de archivo correspondiente (puede que no sea un archivo, en este caso, el enlace simbólico está colgando).

Stéphane Gimenez
fuente
1
Tu respuesta es genial.
Ta Thanh Dinh
12

lsofpuede hacer esto, con la -oopción

En Linux, obtiene su información /proc, por lo que también puede obtenerla allí .

Gilles 'SO- deja de ser malvado'
fuente
Ha pasado mucho tiempo desde mi última pregunta, y no he estado aquí por mucho tiempo. Gracias por la respuesta.
Ta Thanh Dinh
Puedo confirmar que esto también funciona. Sin embargo, el desplazamiento se da como HEX.
Benjamin