首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监控实时环境中的进程系统调用

监控实时环境中的进程系统调用
EN

Stack Overflow用户
提问于 2020-02-24 07:38:42
回答 1查看 52关注 0票数 0

我已经在一个项目上工作了一段时间,第一步是为进程构建一个syscall跟踪库。本质上,我试图做的是让系统在每次进程通过syscall请求操作系统服务时,将事件的相关信息(调用进程、时间、syscall名称)记录到一个文件中。

理论上,这听起来是一件很简单的事情,然而,随着时间的推移,实现这样的事情正变得越来越痛苦。我认为给我带来问题的主要原因是我普遍不知道从哪里开始实现。

最初,我认为可以通过向内核入口点添加几行代码来处理这些问题,但在深入研究entry_64.S一段时间后,我得出的结论是肯定有更简单的方法。我的下一个想法是用我自己的服务覆盖sys_call_table指向的所有服务,这些服务记录日志,然后调用原始服务。但是,事实证明,由于sys_call_table不再被导出,这种方法在linux内核5.4.18中存在一些困难。而且,即使在重新编译内核以便导出sys_call_table时,该表也处于内存保护位置。最后,我一直在尝试auditd。具体地说,我遵循了this link,但它似乎不起作用(当我执行kill命令时,根据时间戳,大约50%的时间只有一个对应的结果)。

我对所有这些死胡同感到有点疲惫,我真的很希望最终能在我的项目中完成第一阶段的工作。有没有人对我应该尝试的东西有什么建议?

解决方案: BPFTrace正是我要找的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-13 12:17:44

我使用BPFTrace记录内核每次开始执行系统调用的时间(不包括由BPFTrace本身启动的那些)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60367940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档