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

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.
Бенджамин