Как узнать смещение открытого файла?


26

Моя проблема в том, что с помощью lsof -p pid я могу узнать список открытых файлов процесса, идентификатор процесса которого pid. Но есть ли способ узнать смещение каждого файла, к которому был получен доступ?

Пожалуйста, дайте мне несколько предложений?

Ответы:


38

В Linux, вы можете найти позицию номера дескриптора Nпроцесса PIDв /proc/$PID/fdinfo/$N. Пример:

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

Один и тот же файл может быть открыт несколько раз в разных позициях с использованием нескольких файловых дескрипторов, поэтому вам придется выбрать соответствующий в случае, если их несколько. Использование:

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

чтобы узнать, к какому файлу прикреплен соответствующий дескриптор файла (это может быть не файл, в этом случае символическая ссылка болтается).


1
Ваш ответ великолепен.
Та Тхань Динь

12

lsofможно сделать это, с -oопцией.

Под Linux он получает свою информацию /proc, так что вы можете получить ее и там .


Прошло много времени с момента моего последнего вопроса, и я давно не был здесь. Спасибо за ответ.
Та Тан Динь

Я также могу подтвердить, что это работает. Однако смещение задается как HEX.
Бенджамин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.