
Estoy intentando obtener los nombres de las llamadas del sistema para comandos comunes y no tengo una lista de comandos.
¿Tiene alguna idea de cómo puedo obtener una lista de llamadas al sistema para algunos comandos?
Finalmente intenté hacer tal cosa manualmente para cada comando. Lo ejecuto strace -c ls
y el resultado es algo como esto:
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
Ahora, ¿cómo puedo extraer la última columna, que son los nombres de las llamadas del sistema? ¿Tiene alguna idea de cómo puedo automatizar esta tarea para otros comandos y guardarla en un archivo CSV?
gracias de antemano
Respuesta1
Podrías usar awk. Algo como esto:
strace -c ls 2>&1 | awk -v p=0 \
'{ if ($1 ~ /[\-]{6}/ ) { p = p + 1 } else if ( p == 1 ) { print $NF }}'