【问题标题】:Is it possible monitoring at real time all the syscall under linux?是否可以实时监控linux下的所有系统调用?
【发布时间】:2012-08-05 22:24:29
【问题描述】:

例如,在一个 linux-machine 中有这么多的进程。 每个都可以使用系统调用,但通常很少使用。 那么,有一种工具或方式可以显示何时使用系统调用以及与哪个进程相关联?

【问题讨论】:

  • ptrace() 本身是一个系统调用,而不是一个工具。
  • 我不知道如何跟踪所有进程(系统范围)的 svc,但是,strace 是我最喜欢的跟踪特定进程的工具。
  • @favoretti:是的。如果你点击链接,你会看到这是第一句话。

标签: c linux linux-kernel system-calls


【解决方案1】:

您可以使用各种工具,例如 straceltrace 和许多其他工具,但我不确定您是否要同时跟踪所有进程。

通常你会附加到一个感兴趣的进程并遵循它的系统调用。

【讨论】:

  • 好吧,我可以将 strace 用于一个进程。如果用户正在创建一个新文件,我可以看到与他使用此方法创建的相关的系统调用吗?
  • 真正创建该文件的不是用户,而是一个进程。如果你连接到 那个 进程,那么,是的......如果你只想监控 FS,还有其他工具可以做到这一点。
  • 是的,我的目标是以实时模式监控 FS,针对特定文件而不是进程。所以,我考虑系统调用,因为它是内核运行的基本指令。
  • 然后你可以使用lnotify,或者其他一些更花哨的东西,例如,splunk FS change monitor (docs.splunk.com/Documentation/Splunk/latest/Data/…) :)
  • @user840718 那么你应该使用 systemtap 和 oprofile,它可以跟踪和分析整个系统,而不是像 strace 这样的一个进程。
【解决方案2】:

您可以使用 Linux 内核审计子系统。

例如,要查看一个名为 sshd (pid - 12345) 的程序进行的所有系统调用:

# auditctl -a entry,always -S all -F pid=12345

【讨论】:

    猜你喜欢
    • 2018-11-29
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多