Ubuntu – How to find out which programs have modified a file over some period of time

filesloggingprocesstroubleshooting

I'd like to better understand which programs are modifying a specific file1 during a reboot. Can I set something up to log this kind of information?

Polling for which processes currently have the file open won't work, as the file may only be open for a few milliseconds.

Can kernel tracing be used to collect this information?


1 /var/lib/alsa/asound.state if you're curious, but I'm interested in a general solution.

Best Answer

This can be achieved with the fuser tool. It lists the process ID of all processes accessing a specific file. Try,

fuser -u .

...to see which files are "open" in your home directory, the process ID's involved and the username owning those processes.

In your case, I'm not sure this will be useful since you're trying to monitor a reboot. I suspect that rc.local will execute too late in the reboot to capture anything useful with, say,

watch -n 0.5 "fuser -u /var/lib/alsa/asound.state"

Hmm - I've just tried dumping this to a file and the output isn't very pretty. But if this can be resolved, then perhaps something can be achieved with cron?