是否可以在执行新流程,关闭流程以及状态更改(即停止,分页等)时收到通知(通过回调或类似方式)?在user-land中,在/ proc。
上设置目录监听器会很容易答案 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