首页 > 运维 > linux运维 > 正文

如何监控进程子进程 fork和exec调用追踪方法

P粉602998670
发布: 2025-07-01 11:22:01
原创
405人浏览过

最直接的方式是使用 strace、auditd 或 systemtap 工具;1. strace 可追踪指定进程的 fork 和 execve 系统调用,加 -f 参数可监控子进程;2. auditd 适合系统级长期监控,通过配置规则记录 execve 调用及相关上下文;3. systemtap 支持编写自定义脚本实现灵活监控,适合高级用户和自动化平台集成。

如何监控进程子进程 fork和exec调用追踪方法

Linux环境下,想监控一个进程及其子进程的 fork 和 exec 调用,最直接的方式是利用系统自带的调试和追踪工具。这类操作通常用于排查程序行为、调试服务启动流程,或者分析恶意行为。下面介绍几种实用的方法。

如何监控进程子进程 fork和exec调用追踪方法

使用 strace 追踪 fork 和 exec

strace 是 Linux 下非常强大的系统调用追踪工具。它可以让你看到某个进程在运行时都调用了哪些系统调用,包括 fork、execve 等。

如何监控进程子进程 fork和exec调用追踪方法

使用方法:

  • 监控某个进程的所有系统调用:

    如何监控进程子进程 fork和exec调用追踪方法
    strace -p <pid>
    登录后复制
  • 只关注 fork 和 exec(更高效):

    strace -p <pid> -e trace=fork,execve
    登录后复制
  • 如果你想同时监控子进程(比如服务启动脚本),加上 -f 参数:

    strace -f -p <pid> -e trace=fork,execve
    登录后复制

这样就能看到目标进程以及它 fork 出来的所有子进程的 exec 行为,适合快速定位问题。


用 auditd 实现系统级监控

如果你需要对整个系统进行监控,而不是只针对单个进程,可以使用 auditd。它是 Linux 审计系统的守护进程,适合做长期或安全相关的监控。

配置步骤:

  1. 安装 auditd(以 Ubuntu 为例):

    sudo apt install auditd
    登录后复制
  2. 添加审计规则,监控 execve 调用(包含 fork 后执行新程序的行为):

    sudo auditctl -w /usr/bin/ -p war -k my_exec_events
    登录后复制

    或者更细粒度地设置系统调用过滤:

    sudo auditctl -a exit,always -F arch=b64 -S execve -k exec_monitor
    登录后复制
  3. 查看日志:

    ausearch -k exec_monitor
    登录后复制

auditd 的优势在于它能记录更完整的上下文信息,比如用户、进程名、参数等,适合做合规审计或入侵检测。


利用 systemtap 编写自定义脚本

对于有定制化需求的场景,比如你想在特定条件下才触发记录,或者要聚合数据统计,可以考虑使用 systemtap。

简单示例脚本:

probe syscall.fork {
    printf("PID %d called fork()\n", pid())
}

probe syscall.execve {
    printf("PID %d is executing %s\n", pid(), filename)
}
登录后复制

保存为 trace_exec_fork.stp,然后运行:

sudo stap trace_exec_fork.stp
登录后复制

systemtap 提供了更大的灵活性,但需要一定的学习成本,适合高级用户或自动化监控平台集成。


小贴士与注意事项

  • 如果你发现子进程没有被追踪到,可能是没加 -f 参数。
  • execve 是实际执行新程序的系统调用,而 fork 只是创建了一个副本。
  • 不同发行版默认安装情况不同,记得先检查是否已安装相关工具。
  • 在生产环境使用 auditd 时要注意性能影响,建议只监控必要内容。

基本上就这些方法了。根据你的具体场景选择合适的工具,效果会更好。

以上就是如何监控进程子进程 fork和exec调用追踪方法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号