
Estou tentando obter os nomes das chamadas do sistema para comandos comuns e não tenho uma lista de comandos.
Você tem alguma ideia de como posso obter uma lista de chamadas do sistema para alguns comandos.
Finalmente tentei fazer isso manualmente para cada comando. Eu corro strace -c ls
e a saída é algo assim:
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
Agora, como posso extrair a última coluna que contém os nomes das chamadas do sistema e você tem alguma ideia de como posso automatizar essa tarefa para alguns outros comandos e salvá-la em um arquivo CSV?
desde já, obrigado
Responder1
Você poderia usar o awk. Algo assim:
strace -c ls 2>&1 | awk -v p=0 \
'{ if ($1 ~ /[\-]{6}/ ) { p = p + 1 } else if ( p == 1 ) { print $NF }}'