monitor open process files on linux (real-time)

The files opened by XYZ process can be found with the command

ls -l /proc/PID/fd

Is there anyway that can be done in a more interactive way like tail auto-refreshing every x seconds?


Solution 1:

Try the watch command:

watch -n 10 ls -l /proc/$$/fd

Watch is nice.

You could use an old school while loop:

while :
do
 ls -l /proc/$$/fd
 sleep 10
done

watch is in the procps package on debian based systems and the procps rpm on RedHat derived systems.

Solution 2:

If you want to see each file as it is being opened, you can filter that with strace. For example:

strace -p _pid_of_app_ -e trace=open,close