zoukankan      html  css  js  c++  java
  • BCC实现进程追踪

    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))
    
    
  • 相关阅读:
    c++看题
    理想化
    thin mission
    编程时 和 thinking
    tiny mission 2021 10 20
    A Magic Lamp HDU
    Poj 3370
    鸽巢原理(抽屉原理)
    Miller-Rabin质数测试
    Nim or not Nim? HDU
  • 原文地址:https://www.cnblogs.com/Emuaer/p/EmuaBCCTools.html
Copyright © 2011-2022 走看看