【问题标题】:type of syscall a process or program is making进程或程序正在进行的系统调用类型
【发布时间】:2015-10-22 23:48:01
【问题描述】:

我试图找出一个进程或程序正在进行多少不同类型的系统调用。我知道我可以执行以下操作来获取每个系统调用的调用总数,如下所示。

strace -c cat abc.txt

上面的输出是命令。

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
  -nan    0.000000           0        10           read
  -nan    0.000000           0         1           write
  -nan    0.000000           0        12           open
  -nan    0.000000           0        14           close
  -nan    0.000000           0        12           fstat
  -nan    0.000000           0        28           mmap
  -nan    0.000000           0        16           mprotect
  -nan    0.000000           0         3           munmap
  -nan    0.000000           0         3           brk
  -nan    0.000000           0         2           rt_sigaction
  -nan    0.000000           0         1           rt_sigprocmask
  -nan    0.000000           0         2           ioctl
  -nan    0.000000           0         1         1 access
  -nan    0.000000           0         1           execve
  -nan    0.000000           0         1           fcntl
  -nan    0.000000           0         2           getdents
  -nan    0.000000           0         1           getrlimit
  -nan    0.000000           0         1           statfs
  -nan    0.000000           0         1           arch_prctl
  -nan    0.000000           0         2         1 futex
  -nan    0.000000           0         1           set_tid_address
  -nan    0.000000           0         1           set_robust_list
------ ----------- ----------- --------- --------- ----------------
100.00    0.000000                   116         2 total

如您所见,它返回的系统调用总数为116。我只需要知道进行了多少不同类型的系统调用,在这种情况下是22

有没有办法在一行中使用strace 做到这一点?

【问题讨论】:

  • 你写的不是一行吗?
  • 这一行返回所有系统调用及其计数。我只需要进行的不同系统调用的总数。例如。总共 1000 个系统调用中有 10 种不同的系统调用类型

标签: linux system-calls sysadmin devops


【解决方案1】:

将输出传送到wc -l 以获取统计信息中的行数。由于统计信息写入标准错误,因此您需要为此进行一些重定向。

strace -c cat abc.txt 2>&1 >/dev/null | wc -l

由于标题、总计和分隔线行,您还需要从中减去 4。

【讨论】:

  • 谢谢巴马尔。这就是我想要的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 2013-08-26
  • 2019-08-23
相关资源
最近更新 更多