Como descobrir o deslocamento de arquivo de um arquivo aberto?

26

Meu problema é que lsof -p pid consigo descobrir a lista de arquivos abertos de um processo cuja identificação de processo é pid. Mas existe uma maneira de descobrir o deslocamento do arquivo de cada arquivo acessado?

Por favor me dê algumas sugestões ?

Ta Thanh Dinh
fonte

Respostas:

38

No linux, você pode encontrar a posição do número Nde processo do descritor de arquivo PIDem /proc/$PID/fdinfo/$N. Exemplo:

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

O mesmo arquivo pode ser aberto várias vezes com posições diferentes usando vários descritores de arquivo, portanto, você deverá escolher o relevante, caso haja mais de um. Usar:

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

para saber qual é o arquivo ao qual o descritor de arquivo correspondente está anexado (pode não ser um arquivo, nesse caso, o link simbólico está oscilando).

Stéphane Gimenez
fonte
11
Sua resposta é ótima.
Ta Thanh Dinh
12

lsofpode fazer isso, com a -oopção

No Linux, ele obtém suas informações /proc, para que você possa obtê-las também.

Gilles 'SO- parar de ser mau'
fonte
Faz muito tempo desde a minha última pergunta e não estou aqui há muito tempo. Obrigado pela resposta.
Ta Thanh Dinh
Posso confirmar que isso também funciona. O deslocamento é dado como HEX, no entanto.
Benjamin