Я пытаюсь найти, сколько различных типов системных вызовов происходит в процессе или программе. Я знаю, что я могу сделать следующее, чтобы получить общее количество вызовов для каждого syscall, как показано ниже.тип syscall процесса или программы делает
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
?
Разве вы не написали одну строчку? – Barmar
Эта строка возвращает все системные вызовы и их подсчеты. Мне нужно всего лишь общее количество различных системных вызовов. Например. 10 различных типов системного вызова среди 1000 итоговых системных вызовов, сделанных – hjelpmig