#! /usr/bin/env stap
global ATTR_MODE = 1
probe kernel.function("notify_change") {
dev_nr = $dentry->d_inode->i_sb->s_dev
inode_nr = $dentry->d_inode->i_ino
if (dev_nr == MKDEV($1,$2) # major/minor device
&& inode_nr == $3
&& $attr->ia_valid & ATTR_MODE)
printf ("%s(%d) %s 0x%x/%u %o %d\n",
execname(), pid(), ppfunc(), dev_nr, inode_nr, $attr->ia_mode, uid())
}
inode number as arguments. For more information on how to retrieve this information, refer to Section 5.2.5, “Monitoring Reads and Writes to a File”.uid()). Example 5.11, “inodewatch2.stp Sample Output” shows the output of inodewatch2.stp while monitoring /home/joe/bigfile when user joe executes chmod 777 /home/joe/bigfile and chmod 666 /home/joe/bigfile.Example 5.11. inodewatch2.stp Sample Output
chmod(17448) inode_setattr 0x800005/6011835 100777 500 chmod(17449) inode_setattr 0x800005/6011835 100666 500