
일반 명령에 대한 시스템 호출 이름을 얻으려고 하는데 명령 목록이 없습니다.
일부 명령에 대한 시스템 호출 목록을 어떻게 얻을 수 있는지 아시나요?
마지막으로 각 명령에 대해 수동으로 이러한 작업을 수행하려고 했습니다. 실행 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 }}'