43.5. 监控使用 SystemTap 文件的读取和写入
您可以使用 inodewatch.stp SystemTap 脚本来实时从文件中读取和写入。
先决条件
- 如安装 Systemtap 所述,已安装了 SystemTap。
流程
-
运行
inodewatch.stp
脚本。
# stap --example inodewatch.stp 'argument1' 'argument2' 'argument3'
脚本 inodewatch.stp
使用三个命令行参数:
- 文件的主设备号。
- 文件的副设备号。
- 文件的 inode 号。
您可以使用以下方法获取这些信息:
# stat -c '%D %i' filename
其中 filename 是绝对路径。
考虑以下示例:
# stat -c '%D %i' /etc/crontab
输出应类似于如下:
805 1078319
其中:
-
805
是基于16 (十六进制)的设备号。最后两个数字是副设备号码,剩余的数字是主号码。 -
1078319
是 inode 号。
要启动监控 /etc/crontab
,请运行:
# stap inodewatch.stp 0x8 0x05 1078319
在前两个参数中,您必须为具有 16 的编号使用 0x 前缀。
输出包含以下内容:
- 执行读取或写入进程的任何进程的名称和 ID
-
它正在执行的功能(
vfs_read
或vfs_write
) - 内核设备号
这个示例的输出应该类似如下:
cat(16437) vfs_read 0x800005/1078319 cat(16437) vfs_read 0x800005/1078319