提取 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 }}'

相關內容