Извлеките один столбец strace -c

Я пытаюсь получить имена системных вызовов для общих команд, но у меня нет списка команд.
Вы хоть представляете, как мне получить список системных вызовов для некоторых команд.
Наконец, я попытался сделать это вручную для каждой команды. Я запускаю strace -c ls и получаю что-то вроде этого:

Canzanese_QRS_2015.pdf         mal-api-2019.zip
JetBrains.PyCharm.2021.1.2.tar.gz  vfvw7g8s8h-2.zip
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 18.18    0.000202          17        12           mprotect
 15.21    0.000169          10        17           mmap
 12.15    0.000135          15         9           openat
 10.17    0.000113          10        11           close
  8.28    0.000092           9        10           fstat
  6.39    0.000071          10         7           read
  4.50    0.000050           6         8         8 access
  3.78    0.000042          21         2         2 statfs
  3.06    0.000034          34         1           prlimit64
  2.88    0.000032          16         2           ioctl
  2.70    0.000030          10         3           brk
  2.52    0.000028          14         2           rt_sigaction
  2.16    0.000024          24         1           munmap
  1.62    0.000018           9         2           write
  1.53    0.000017           9         2           getdents
  1.26    0.000014          14         1           rt_sigprocmask
  1.26    0.000014          14         1           set_robust_list
  1.17    0.000013          13         1           arch_prctl
  1.17    0.000013          13         1           set_tid_address
  0.00    0.000000           0         1           execve
------ ----------- ----------- --------- --------- ----------------
100.00    0.001111                    94        10 total

Теперь, как я могу извлечь последний столбец, который является именами системных вызовов, и знаете ли вы, как я могу автоматизировать эту задачу для других

Заранее спасибо

0
задан 1 July 2021 в 09:56

1 ответ

Вы можете использовать awk. Что-то вроде этого:

strace -c ls 2>&1 | awk -v p=0 \
  '{ if ($1 ~ /[\-]{6}/ ) { p = p + 1 } else if ( p == 1 ) { print $NF }}'
0
ответ дан 28 July 2021 в 11:23

Другие вопросы по тегам:

Похожие вопросы: