进程或程序正在进行的系统调用类型
type of syscall a process or program is making
我正在尝试找出一个进程或程序进行了多少种不同类型的系统调用。我知道我可以执行以下操作以获得每个系统调用的调用总数,如下所示。
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
如您所见,它 returns 进行的系统调用总数为 116
。我只需要知道进行了多少种不同类型的系统调用,在本例中为 22
。
有没有办法使用 strace
在一行中做到这一点?
将输出通过管道传输到 wc -l
以获取统计信息中的行数。由于统计信息写入标准错误,您需要为此做一些重定向。
strace -c cat abc.txt 2>&1 >/dev/null | wc -l
您还需要从中减去 4,因为有 header、总计和分隔线。
我正在尝试找出一个进程或程序进行了多少种不同类型的系统调用。我知道我可以执行以下操作以获得每个系统调用的调用总数,如下所示。
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
如您所见,它 returns 进行的系统调用总数为 116
。我只需要知道进行了多少种不同类型的系统调用,在本例中为 22
。
有没有办法使用 strace
在一行中做到这一点?
将输出通过管道传输到 wc -l
以获取统计信息中的行数。由于统计信息写入标准错误,您需要为此做一些重定向。
strace -c cat abc.txt 2>&1 >/dev/null | wc -l
您还需要从中减去 4,因为有 header、总计和分隔线。