Lesson 2. hello_fields.py

下面这个函数实现的功能是:当用户在调用sys_clone 时,会打印调用的时间,comm,pid,message
具体的输出如下:
TIME(s)            COMM             PID    MESSAGE
24585001.174885999 sshd             1432   Hello, World!
24585001.195710000 sshd             15780  Hello, World!

from bcc import BPF

# define BPF program
#定义一个c 函数,当需要监控的函数被调用时,会触发这个函数的调用. 这个函数被定义在一个字符串中

prog = """
#形参是void
int hello(void *ctx) {
	#通过bpf_trace_printk来打印log。
	bpf_trace_printk("Hello, World!\\n");
	#这个函数要返回0 ,否则会触发一个bug
	return 0;
}
"""

# load BPF program
#通过BPF 来讲前面定义的hello 函数装载并编译
b = BPF(text=prog)
#设置出发点,从这里可以看到当调用sys_clone的时候,会调用fn_name 这个函数,也就是hello 这个函数。
b.attach_kprobe(event="sys_clone", fn_name="hello")

# header
#通过python 输出一行log
print("%-18s %-16s %-6s %s" % ("TIME(s)", "COMM", "PID", "MESSAGE"))

# format output
#死循环
while 1:
    try:
		#类似前面的额trace_print,得到要输出的内容
        (task, pid, cpu, flags, ts, msg) = b.trace_fields()
    except ValueError:
        continue
	#在python 中输出要打印的内容
    print("%-18.9f %-16s %-6d %s" % (ts, task, pid, msg))
#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个SQL语句,包含了多个表的连接操作。具体来说,这个SQL语句从名为ods_t_jw_t_course_takes的表中查询数据,并将该表与其他6个表进行了左连接操作。连接的条件包括多个列名和表名。 这个SQL语句的目的是查询学生选课信息,并将不同表中的字段组合在一起。其中,a.id、a.created_at、a.update_at、a.attend、a.paid、a.turn、b.name、c.name、d.fullname、e.code、f.name、g.school和g.season分别代表不同的字段,可以根据需要进行调整和筛选。 需要注意的是,在这个SQL语句中,有一个逗号在left join ods.ods_t_jw_hb_course_take_types b on a.course_take_type_id=b.id之后,需要将其删除,否则会导致语法错误。正确的写法是: ``` select a.id as 非业务主键, a.created_at as 创建时间, a.update_at as 更新时间, a.attend as 是否上课, a.paid as 重修费是否支付, a.turn as 选课轮次, b.name as 修读类别, c.name as 选课方式, d.fullname as 教学任务班, e.code as 学号, f.name as 课程名称, g.school as 学年度, g.season as 开课季 from ods.ods_t_jw_t_course_takes a left join ods.ods_t_jw_hb_course_take_types b on a.course_take_type_id=b.id left join ods.ods_t_jw_hb_election_modes c on a.election_mode_id=c.id left join ods.ods_t_jw_t_lessons d on a.lesson_id=d.id left join ods.ods_t_jw_c_students e on a.std_id=e.id left join ods.ods_t_jw_t_courses f on a.course_id=f.id left join ods.ods_t_jw_c_semesters g on a.semester_id=g.id; ``` 这样就可以正确执行该SQL语句,查询所需的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值