Моя проблема в том, что
lsof -p pid
я могу узнать список открытых файлов процесса, идентификатор процесса которого pid. Но есть ли способ узнать смещение файла каждого доступного файла?
Пожалуйста, дайте мне несколько предложений?
решение1
В Linux вы можете найти позицию номера дескриптора файла N
процесса PID
в /proc/$PID/fdinfo/$N
. Пример:
$ cat /proc/687705/fdinfo/36
pos: 26088
flags: 0100001
Один и тот же файл может быть открыт несколько раз с разных позиций с использованием нескольких файловых дескрипторов, поэтому вам придется выбрать соответствующий, если их больше одного. Используйте:
$ readlink /proc/$PID/fd/$N
чтобы узнать, к какому файлу прикреплен соответствующий файловый дескриптор (это может быть не файл, в этом случае символическая ссылка является висячей).
решение2
lsof
можно сделать это, с -o
опцией.
В Linux он получает информацию из /proc
, поэтому вы можетеполучить его тамтакже.