lsof
command.The
lsof
command has many, many options, and it allows you to see which files have been opened by a given process. Coming the other direction, it also allows you to see which process has opened a given file. I can see how it would be extremely useful in many different circumstances.However, my problem was that my process was opening files and closing them almost immediately. In other words, I had no hope of using the
lsof
command to view open files, because lsof
only shows files that are currently open, and by the time lsof
would run, the files were already closed again!I discovered a different way to continuously monitor, in real-time, all of the files that were being opened by a process, regardless of how quickly they were closed:
strace -tt myprog 2> system_calls.txt
grep 'open(' system_calls.txt > opened_files.txt
strace
is a command that logs all of the system calls for myprog
. The -tt
option includes a timestamp (with microseconds) at the beginning of each line. Each file is opened with a call to "open(", so grepping for this string should give you a list of all files that were opened.