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

时间:2014-10-07 19:24:31

标签: linux process kernel-module

是否可以在执行新流程,关闭流程以及状态更改(即停止,分页等)时收到通知(通过回调或类似方式)?在user-land中,在/ proc。

上设置目录监听器会很容易

1 个答案:

答案 0 :(得分:3)

你考虑过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