You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除未使用BPF.detach_kprobe()的BCC附加eBPF程序?

移除未手动 detach 的 BCC 附加 eBPF kprobe 程序

以下是几种可行的清理方法:

方法一:通过 BCC 代码主动 detach

如果还能获取到对应 BPF 实例的引用,可以直接调用 detach_kprobe 移除探针:

from bcc import BPF
b = BPF(src_file="udpsend.c", debug=0)
# 移除指定事件的kprobe
b.detach_kprobe(event="udp_sendmsg")

若不确定已附加的探针详情,可遍历当前实例的 kprobe 列表批量移除:

from bcc import BPF
b = BPF(src_file="udpsend.c", debug=0)
for kp in b.kprobes:
    b.detach_kprobe(event=kp.event)

方法二:用 bpftool 手动清理

如果已关闭原 Python 进程,可直接通过 bpftool 工具操作:

  1. 先定位目标 kprobe 类型的 eBPF 程序 ID:
    bpftool prog show type kprobe
    
    从输出中找到关联 udp_sendmsg 的程序,可通过 bpf_trace_printk 的字符串内容区分两次加载的程序。
  2. 删除程序关联的链接或直接删除程序:
    • 先查看程序关联的链接 ID:
      bpftool link show prog <PROG_ID>
      
    • 删除链接:
      bpftool link delete id <LINK_ID>
      
    • 或直接删除程序(内核会自动清理关联链接):
      bpftool prog delete id <PROG_ID>
      

方法三:终止对应 Python 进程

BCC 加载的 eBPF 程序,在其所属的 Python 进程退出时,内核会自动清理关联的 kprobe 链接与 eBPF 程序(除非程序被手动固定)。可通过以下命令定位并终止进程:

ps aux | grep python | grep udpsend
kill <PID>

内容的提问来源于stack exchange,提问作者akastack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 01:57:50