centos8系统中bcc安装

命令安装

yum -y install bcc
yum -y install bcc-tools
yum -y install python3-bcc
yum -y install bcc-devel

此时会安装bcc基础库和对应bcc tools,然而我们想要直接运行对应的bcc-tools,比如execsnoop却发现并未找到对应的可执行文件。查看下bcc-tools工具的安装目录:

rpm -ql bcc-tools

发现该工具的安装目录在/usr/share/bcc/tools/ 这里。这个目录并不存在于默认的PATH环境变量中,因此直接运行不了。需要把该目录添加到PATH目录中才行。

源码包

如果我们想要下载github中的源码包,并尝试调试其中的工具,那么下载后,直接进入bcc-master/tools目录去运行,你可能会发现无法执行。这里主要是版本兼容的问题,我曾遇到过的两个问题:

1.无法找到python可执行文件
在源码包中的工具,无法找到python文件,新版的bcc tools都是使用的python3语言来写,工具中索引的是/usr/bin/python这个可执行文件,如果系统中没有,那么就无法找打,而使用yum安装的bcc-tools这里已经做了适配,所以没有问题。修复方案:

sudo ln -s $(which python3) /usr/bin/python

2.无法执行execsnoop,python module报错
这个主要跟版本有关,我们并没有从bcc源码重新编译安装bcc,因此系统中的bcc依赖库和python3-bcc包都是使用yum安装的,可能与下载的源码包版本并不一致,因此我们运行源码包中的tools工具会出现版本兼容的问题。比如我遇到的问题就是:

No module named bcc.containers

此时我通过如下命令看下python3-bcc依赖库都安装了哪些文件:

rpm -ql python3-bcc

输出的文件全部都安装到了 /usr/lib/python3.6/site-packages/bcc/目录中。但是其中并不包含containers python库文件。这就是问题所在。

如何解决?

既然源码包中的tools会引用到这个库,那么该库一定在源码包这个版本中,我们搜索bcc-master源码包目录,尝试寻找python库的位置:

find . -name *containers*
./src/python/bcc/containers.py

我们在这个目录中找到的python库文件,该目录中实际是就是新版本的python3-bcc库,那么直接把需要的库文件复制一份到/usr/lib/python3.6/site-packages/bcc/,应该就可以默认被python引用到了。

cp bcc-master/src/python/bcc/containers.py  /usr/lib/python3.6/site-packages/bcc/ 

OK了,再次尝试执行源码包中的execsnoop.py:

# ./execsnoop.py 
PCOMM            PID    PPID   RET ARGS
ps               3696045 3696044   0 /usr/bin/ps awwx -o pid,ppid,cmd
wc               3696048 3696044   0 /usr/bin/wc -l
sleep            3696049 3131     0 /usr/bin/sleep 5

大功告成。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值