提取一列 strace -c

提取一列 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

现在我如何提取最后一列即系统调用名称,您知道如何自动执行其他命令的这项任务并将其保存到 CSV 文件中吗?

提前致谢

答案1

你可以使用 awk。像这样:

strace -c ls 2>&1 | awk -v p=0 \
  '{ if ($1 ~ /[\-]{6}/ ) { p = p + 1 } else if ( p == 1 ) { print $NF }}'

相关内容