Linux: получить список файлов, которые программа открыла в данный момент

В Linux, как я могу получить список файлов, открытых в настоящее время в программе X?

(В частности, я нахожусь в Fedora, а программа Zend Studio, но я предполагаю, что есть общий ответ.)

Ответы

Ответ 1

Использовать, например. lsof ( "список открытых файлов" ) и отфильтруйте вывод или используйте параметр -c programX, чтобы ограничить его файлами, открытыми программойX. Это выражение может быть подстановочным знаком.

Ответ 2

Вы можете найти символические ссылки на фактические файлы в /proc/PID/fd, где PID - это идентификатор процесса.

Ответ 3

ls -l /proc/<zend studio pid>/fd распечатает список дескрипторов файлов. Те, которые сопоставляются с файлами, открытыми через open(), будут символическими ссылками на путь файла, используемый для их открытия.

Ответ 4

Установите программу lsof, если вы еще этого не сделали. Получите pid запущенной программы. Запустите lsof -p [pid].

Ответ 5

lsof -p [PID]

Или, чтобы получить PID за один раз

lsof -p `pgrep [PROG_NAME]`

Или, еще проще

lsof -c [PROG_NAME]

Ответ 6

Вы можете использовать

ls /proc/PID/fd | wc -l 

Что возвращает количество файлов, открытых PID или вы можете использовать lsof (список открытых файлов)

lsof -a -p pid