opensnoop(8) | System Manager's Manual | opensnoop(8) |
opensnoop - trace open() syscalls with file details. Uses Linux ftrace.
opensnoop [-htx] [-d secs] [-p pid] [-L tid] [-n name] [filename]
This traces open() syscalls, showing the file name (pathname) and returned file descriptor number (or -1, for error).
This implementation is designed to work on older kernel versions, and without kernel debuginfo. It works by dynamic tracing of the return value of getname() as a string, and associating it with the following open() syscall return. This approach is kernel version specific, and may not work on your version. It is a workaround, and proof of concept for ftrace, until more kernel tracing functionality is available.
Since this uses ftrace, only the root user can use this tool.
FTRACE and KPROBE CONFIG, the syscalls:sys_exit_open tracepoint, and the getname() kernel function. You may already have these enabled and available on recent Linux kernels. And awk.
The ftrace buffer has a fixed size per-CPU (see /sys/kernel/debug/tracing/buffer_size_kb). If you think events are missing, try increasing that size.
This reads and open() syscalls and getname() kernel functions as they occur. For high rates of opens (> 500/s), the overhead may begin to be measurable. Test yourself. You can use the -d mode to buffer output, reducing overheads.
This is from the perf-tools collection.
Also look under the examples directory for a text file containing example usage, output, and commentary for this tool.
Linux
Unstable - in development.
Brendan Gregg
2014-07-20 | USER COMMANDS |