是否有可能得到通知(通过callback或类似的)当一个新的进程执行,当一个是closures的,当状态改变(即停止,分页等)? 在user-land中,在/ proc上设置一个目录监听器是很容易的。
你有没有考虑过kprobes? 执行一些内核代码时,可以使用kprobes执行回调函数。 例如,您可以添加一个do_fork
kprobe,以在本示例中创建新进程时进行警报。
同样,您可以添加do_exit()
的探测器以在进程退出时捕获。
为了改变状态,你可以在sched_switch()
上有一个返回探测器,并在状态改变时捕获。 根据您的应用程序,这可能会增加太多的开销。
如果您只希望收集数据,执行一些简单的处理,而不想花费更多的内核模块,systemtap可能是编写内核模块的一个很好的选择: https : //sourceware.org/systemtap/documentation html的
关于kprobes的更多细节: https ://www.kernel.org/doc/Documentation/kprobes.txt
sched_switch()
systemtap示例: https : sched_switch()