2011-06-23 2 views
1

Мне присвоен проект без документации и большого количества неуправляемого кода. В проекте четко указаны пути (и фактически они представляют собой переменные среды, которые устанавливаются для разных значений в разных местах), которые указывают на выходные файлы. Я изменил их, чтобы перенаправить вывод на каталоги в моей рабочей области, но все же файлы не создаются, и я не могу найти их в своей рабочей области. Я считаю, что они создаются где-то еще в файловой системе. Как я уже упоминал ранее, существует множество разных мест, которым присвоены переменные среды, с помощью скриптов. Я думал, что получил соответствующие сценарии, но, видимо, я чего-то не хватает.Как отслеживать все выходные файлы с исполняемого файла, если возможно ?:

Есть ли утилита, которую я могу использовать для отслеживания всех выходных файлов из определенного исполняемого файла (распечатать все имена файлов, считанные/записанные)?

Я работаю в Fedora, и проект написан в основном в Фортране.

ответ

5

strace будет печатать детали для каждого syscall, вы можете просто отфильтровать вывод для вызовов open().

+0

Замечательный. Я должен был подумать об этом решении. Я попробую сейчас и обновить свой голос по вашему комментарию. –

+1

Я не могу сказать, что это решение принесло мне ответ, который я хотел (не понимайте меня, он сделал именно то, что мне это нужно!), Но это помогло мне определить довольно вопиющую проблему в программном обеспечении, с которым я Я работаю. Спасибо за вашу помощь, tstenner. –

2

Один из вариантов: lsof, например.

lsof -p <PID> 
+1

Это хороший выбор, когда a) 'strace' производит слишком много выходных данных по какой-либо причине, и b) когда это известно *, когда * процесс имеет открытые файлы. – wallyk

+0

Замечательно, что есть другие методы. Я grep-ed вывод из strace, но минимальная производительность в первую очередь всегда хороша. –