在 Debian(以及其他 Linux 发行版)里,“监控 readdir”通常有几层含义,取决于你是想看哪个进程在读取目录、实时监控目录变化,还是审计系统调用。下面按常见场景给你几种做法。
如果你只是想知道某个目录里文件被增删改,用 inotify 系列工具最合适。
inotifywait(推荐)sudo apt install inotify-tools
inotifywait -m -r -e open,access,modify,create,delete /path/to/dir
常用事件:
open / access:readdir 相关create / delete:文件变化-r:递归子目录-m:持续监控示例(只监控 readdir):
inotifywait -m -e open,access /var/log
如果想知道哪个进程、哪个命令正在读取目录。
strace(调试单个进程)strace -e trace=file -f ls /tmp
监控已运行进程:
strace -e trace=file -p <PID>
只看 readdir:
strace -e trace=readdir,getdents,getdents64 -p <PID>
适合安全审计、入侵检测。
auditdsudo apt install auditd
sudo auditctl -w /path/to/dir -p r -k dir_read
查看日志:
sudo ausearch -k dir_read
字段说明:
-p r:读(readdir)-k:自定义关键字sudo bpftrace -e '
tracepoint:syscalls:sys_enter_getdents* {
printf("%s %d %s\n", comm, pid, str(args->pathname));
}'
优点:
| 需求 | 工具 |
|---|---|
| 看目录变化 | inotifywait |
| 看某进程 readdir | strace |
| 审计谁读目录 | auditd |
| 高性能内核监控 | eBPF |
如果你能说清楚:
我可以给你更精确的命令示例。