首页/系统/Linux 运维命令速查/bpftrace 快速上手
性能与监控48 条

bpftrace 快速上手

eBPF 动态追踪的单行工具:oneliners 查谁在调用某个系统调用、哪个进程读写最多、延迟分布;比 strace 更少侵入。

Linux 运维命令速查系统更新于 2026-10-12
用途系统调用/IO/延迟的动态观测
语法bpftrace -e 'probe /filter/ { action }'
示例execsnoop、biolatency 等)

常用一行流

常用一行流
sudo bpftrace -e 'tracepoint:syscalls:sys_enter_execve { printf("%s %s\n", comm, str(args->filename)); }'
sudo bpftrace -e 'kprobe:vfs_read { @[comm] = count(); }'      # 读调用次数按进程
sudo bpftrace -e 'kprobe:do_sys_openat2 { @[comm] = count(); }' # 谁在开文件
# 延迟直方图
sudo bpftrace -e 'kprobe:vfs_fsync { @ns = hist(nsecs - @start[tid]); } kprobe:vfs_fsync_return { @start[tid] = nsecs; }'
内核版本决定可用探针;生产使用遵循最小窗口原则,先在测试环境验证脚本。

易错点

  • kprobe 依赖内核符号与版本:函数名跨内核版本会变(do_sys_open → do_sys_openat2)
  • 忘记控制输出量导致脚本自身成为负载:先 count() 聚合,别 printf 每条事件

数据来源与参考

  • bpftrace 官方文档(one-liners)
  • eBPF 内核文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌