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 (список открытых файлов)