| sean finney on 21 Nov 2011 06:34:49 -0800 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: [PLUG] How to Find Most Used Files |
On Sun, Nov 20, 2011 at 03:20:14PM -0500, Rich Freeman wrote:
> I could envision a program aggregating from lsof or something like
> that, or using a file-alteration-monitor or direct accounting calls to
> the kernel. That wouldn't require quite as many updates since you
> could flush the log once an hour or whatever. I have no idea if such
> a thing already exists though.
Assuming you're on a linux system (i.e. not BSD/Slowlaris/AIX), you can
use either inotify or stap for this purpose. For example, if you have
systemtap fully installed (including kernel debug symbols), the following
will print a line for every open syscall for the next 4 seconds, along
with the process responsible and pid.
#! /usr/bin/stap
probe syscall.open
{
printf ("%s(%d) open (%s)\n", execname(), pid(), argstr)
}
probe timer.ms(4000)
{
exit ()
}
inotify isn't too much more complicated, and there are python bindings
out there. and inotify has the advantage of not requiring those debug
symbols, but I didn't have an example laying around for that one :)
Two important things to keep in mind though:
* tracing like this has a noticable overhead on systems with lots of I/O
* if you write your results somewhere, make sure it doesn't get caught
by the syscall tracing, otherwise your results will be... imbalanced :)
But I'm not sure what any of this will actually get you that you couldn't
get from filesystem-level tools like iostat and a couple manual lsof's.
sean
___________________________________________________________________________
Philadelphia Linux Users Group -- http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug