加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

在Linux内核模块中侦听新进程

发布时间:2020-12-31 11:22:03 所属栏目:Linux 来源:网络整理
导读:是否有可能在执行新流程,关闭流程以及状态发生变化(即停止,分页等)时收到通知(通过回调或类似方式)?在user-land中,在/ proc上设置目录监听器会很容易. 解决方法 你考虑过kprobes吗?执行某些内核代码时,可以使用kprobes执行回调函数.例如,您可以添加do_fo

是否有可能在执行新流程,关闭流程以及状态发生变化(即停止,分页等)时收到通知(通过回调或类似方式)?在user-land中,在/ proc上设置目录监听器会很容易.

解决方法

你考虑过kprobes吗?执行某些内核代码时,可以使用kprobes执行回调函数.例如,您可以添加do_fork kprobe以在创建新进程时发出警报,如 this example所示.

同样,您可以为do_exit()添加探针以捕获进程何时退出.

对于更改状态,您可以在sched_switch()上有一个返回探测器,并在状态更改时捕获.根据您的应用程序,这可能会增加太多开销.

如果您只想收集数据,执行一些轻量级处理,并且不希望使用内核模块做更多的事情,那么systemtap可能是编写内核模块的一个很好的替代方法:https://sourceware.org/systemtap/documentation.html

关于kprobes的更多细节:
https://www.kernel.org/doc/Documentation/kprobes.txt

sched_switch()systemtap示例:
https://sourceware.org/systemtap/examples/profiling/sched_switch.stp

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读