2016 m. rugpjūčio 1 d., pirmadienis

strace

Strace yra sisteminė programa, leidžianti peržiūrėti sisteminius iškvietimus (sys call), kuriuos atlieka bet kuri programa.

Sisteminių kvietimų rodymas. strace išveda tekstą į stderr. Jei norime apdoroti tekstą, jį reikia išsaugoti su -o nustatymu arba nukreipti stderr į stdout plačiau apie tai.
$ strace ls /tmp/ 2>&1 | grep tmp

Rodo kiek laiko užtruko tam tikruose procesuose
$ strace -c w
$ strace -c -S calls cat /dev/null #Rikiuoja pagal iškvietimų skaičių

Peržiūrėti iškvietimus susijusius tik su failų veiksmais (open, file, memory, network...)
$ strace -e open,close cat /dev/null
$ strace -e trace=open,close -o out_t_file.out w #Seka tiktai tam tikrus sitemos iškvietimus. Numatytas nustatymas trace=all

Prisikabinimas prie apache proceso:
$ lsof -p `pidof telnet`
telnet 17593 sup 3u IPv4 7391419 0t0 TCP localhost:33506->localhost:http (ESTABLISHED)


$ netstat -nap | grep 33506
tcp 0 0 127.0.0.1:33506 127.0.0.1:80 ESTABLISHED 17593/telnet


$ strace -o /tmp/output -f -r -s4096 -p 17593 # -f reliatyvūs laiko štampai tikrinant, rodo kas lėtai veikia

$ cat /tmp/output | sort -k 2 -n #Pasitikrinam, kas daugiausiai užima laiko

Prisijungimas prie tty:
$ ps -aux | grep "[p]ts/35" #Randam pid
sup 10369 0.0 0.0 24176 5744 pts/35 Ss+ 23:31 0:00 bash
$ sudo strace -p 10369

Šaltiniai:
http://fmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture1.pdf
https://www.youtube.com/watch?v=nxQ-V9yrUNU