是否有可能在执行新进程、关闭进程以及状态更改(即停止、分页等)时(通过回调或类似方式)收到通知?在用户空间中,很容易在/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()
系统抽头示例:
https://sourceware.org/systemtap/examples/profiling/sched_switch.stp
关于linux - 在 Linux 内核模块中监听新进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26243638/