Continuously monitor files opened/accessed by a process
lsof -p 12345
will list all the files opened by process whose pid is 12345 but only for a particular instant of time.
How can we continuously monitor a process from the start to end(until process is terminated) to list/show every single file accessed by the process during its whole lifetime?
Solution 1:
Try with strace -p 12345
; it should do what you are trying to achieve.
The output can be filtered to only display opened files (Dan D.'s comment):
strace -e open -p 12345
Note: you can also trace quickly running processes with strace -e open <command>
.
Solution 2:
The new utility fatrace will do this: https://launchpad.net/fatrace/
sudo fatrace | grep '(6514)'
Don't use the -p option, it means the opposite of what it means in lsof or other utilities.
Solution 3:
This will loop re-running your command and clearing the screen each time:
watch "lsof -p 12345"
WARNING: this will miss quick file accesses and is only suitable to see long standing files