Extrahiert eine Spalte von strace -c

Extrahiert eine Spalte von strace -c

Ich versuche, die Systemaufrufnamen für allgemeine Befehle zu erhalten, habe aber keine Befehlsliste.
Haben Sie eine Idee, wie ich eine Liste der Systemaufrufe für einige Befehle erhalten kann?
Schließlich habe ich versucht, dies für jeden Befehl manuell zu tun. Ich führe es aus strace -c lsund die Ausgabe sieht ungefähr so ​​aus:

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

Wie kann ich nun die letzte Spalte mit den Systemaufrufnamen extrahieren und haben Sie eine Idee, wie ich diese Aufgabe für andere Befehle automatisieren und in einer CSV-Datei speichern kann?

Dank im Voraus

Antwort1

Sie könnten awk verwenden. So etwas wie das hier:

strace -c ls 2>&1 | awk -v p=0 \
  '{ if ($1 ~ /[\-]{6}/ ) { p = p + 1 } else if ( p == 1 ) { print $NF }}'

verwandte Informationen