我正在尝试获取常用命令的系统调用名称,但没有命令列表。
您知道如何获取某些命令的系统调用列表吗?
最后,我尝试为每个命令手动执行此类操作。我运行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 }}'