是否有可能在执行新进程,何时关闭以及状态更改(即停止,分页等)时得到通知(通过回调或类似方式)?在user-land中,在/ proc上设置一个目录监听器很容易。在Linux内核模块中侦听新进程
5
A
回答
2
您是否考虑过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
相关问题
- 1. Linux内核模块编程
- 2. 在编写Linux内核模块时获取用户进程pid
- 3. Linux内核模块中的内核线程之间的通信
- 4. 剖析Linux内核模块
- 5. Linux内核模块调试
- 6. 关于linux内核模块
- 7. Linux内核模块编译
- 8. 安装Linux内核模块
- 9. Linux内核模块编译
- 10. Linux内核模块ABI(x86)
- 11. 启动时内核模块在Linux内核中的状态
- 12. 如何在内核模块中打印linux内核版本号
- 13. 如何在Linux内核模块
- 14. 在Linux内核模块中刷新CPU数据缓存
- 15. Linux内核进程管理
- 16. 如何在Linux Ubuntu中编译驱动程序/内核模块?
- 17. 在运行时从linux内核模块获取内核版本
- 18. 如何在安装新内核时自动执行linux内核模块编译?
- 19. 编译Linux内核模块(lincan)
- 20. C - Linux - 内核模块 - TCP标头
- 21. 构建Linux内核模块的问题
- 22. Linux内核模块的位置
- 23. 如何编译Linux内核模块
- 24. 运行Linux内核模块(Hello World)
- 25. 添加模块C到linux内核
- 26. 烘烤Linux内核模块,使用OpenEmbedded
- 27. 从Linux内核模块写入debugfs
- 28. linux内核模块字符设备
- 29. Linux内核模块的权限
- 30. 如何调试linux内核模块?
“在用户的土地,这将是很容易设置上的/ proc目录监听器”其实,不,那不行。但[/ proc连接器呢](http://stackoverflow.com/questions/6075013/linux-detect-launching-of-programs)。 – duskwuff 2014-10-08 16:01:20