DTrace utility to watch for file modification in a Maildir.
This commit is contained in:
parent
a4f102ad99
commit
a9ed300a03
54
unread.d
Executable file
54
unread.d
Executable file
@ -0,0 +1,54 @@
|
||||
#!/usr/sbin/dtrace -s
|
||||
|
||||
#pragma D option quiet
|
||||
#pragma D option defaultargs
|
||||
#pragma D option switchrate=10hz
|
||||
|
||||
/*
|
||||
dtrace:::BEGIN
|
||||
{
|
||||
printf("%-12s %6s %6s %-12.12s %s\n", "TIME(ms)", "UID",
|
||||
"PID", "PROCESS", "provider:module:function:name");
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
printf("%-12d %6d %6d %-12.12s %s:%s:%s:%s\n", timestamp / 1000000,
|
||||
uid, pid, execname, probeprov, probemod, probefunc, probename);
|
||||
*/
|
||||
|
||||
syscall::open:entry
|
||||
/execname == "imap" && arg1 & O_CREAT/
|
||||
{
|
||||
self->add = copyinstr(arg0)
|
||||
}
|
||||
|
||||
syscall::unlink:entry
|
||||
/execname == "imap"/
|
||||
{
|
||||
self->remove = copyinstr(arg0);
|
||||
}
|
||||
|
||||
|
||||
syscall::rename:entry
|
||||
/execname == "imap"/
|
||||
{
|
||||
self->remove = copyinstr(arg0);
|
||||
self->add = copyinstr(arg1);
|
||||
}
|
||||
|
||||
syscall::unlink:entry,
|
||||
syscall::rename:entry
|
||||
/execname == "imap"/
|
||||
{
|
||||
printf("- %s\n", self->remove);
|
||||
self->remove = 0;
|
||||
}
|
||||
|
||||
syscall::open:entry,
|
||||
syscall::rename:entry
|
||||
/execname == "imap" && self->add != 0/
|
||||
{
|
||||
printf("+ %s\n", self->add);
|
||||
self->add = 0;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user