BCC的使用
对于BCC tools的使用我们工具包中的各种已经定义好的代码包(或者说是C语言的函数集合),来完成一些我们平常难以实现的操作,比如网络流量监控,进程监控。(本文特指在Linux系统)
-
我们可以利用python代码与c语言的结合使用来实现tools的调用
-
定义kprobes进行内核的跟踪,定义clone函数打印信息
-
最后完成打印
-
完成效果
-
代码如下
from bcc import BPF
# define BPF program
prog = """
int hello(void *ctx) {
bpf_trace_printk("Hello, World!\\n");
return 0;
}
"""
# load BPF program
b = BPF(text=prog)
b.attach_kprobe(event=b.get_syscall_fnname("clone"), fn_name="hello")
# header
print("%-18s %-16s %-6s %s" % ("TIME(s)", "COMM", "PID", "MESSAGE"))
# format output
while 1:
try:
(task, pid, cpu, flags, ts, msg) = b.trace_fields()
except ValueError:
continue
print("%-18.9f %-16s %-6d %s" % (ts, task, pid, msg))