GNU/Linux >> Znalost Linux >  >> Linux

Jak sledovat podřízený proces pomocí strace?

strace -f ke sledování podřízeného procesu, který je fork() vyd.


Existuje perl skript s názvem strace-graph . Zde je verze z github. Je součástí balení crosstool-ng verze kompilátorů. Funguje to pro mě i při použití napříč platformami.

ARM Linux box.

$ ./strace -f -q -s 100 -o app.trc -p 449
$ tftp -pr app.trc 172.0.0.133

X86_64 Linux box.

$ ./strace-graph /srv/tftp/app.trc 
 (anon)
  +-- touch /tmp/ppp.sleep
  +-- killall -HUP pppd
  +-- amixer set Speaker 70%
  +-- amixer set Speaker 70%
  +-- amixer set Speaker 70%
  +-- amixer set Speaker 70%
  +-- amixer set Speaker 50%
  +-- amixer set Speaker 70%
  `-- amixer set Speaker 50%

Výstup lze použít k usnadnění navigace v hlavním protokolu trasování.


Nevidím snadný způsob:

Můžete použít -ff možnost s -o filename vytvořit více souborů (jeden na pid).

např.:

strace -o process_dump -ff ./executable
grep clone process_dump*

to vám pomůže zjistit, který rodič co vytvořil. Možná by vám to pomohlo – alespoň byste pak mohli hledat pozpátku.


Linux
  1. Jak zabít proces v Linuxu pomocí příkazu?

  2. Jak najít všechny podřízené procesy?

  3. Jak získat PID z rozvětveného podřízeného procesu ve skriptu shellu

  1. Jak zkontrolovat, zda proces stále běží pomocí Pythonu na Linuxu?

  2. Jak nechat podřízený proces zemřít po odchodu rodiče?

  3. Jak zjistím, který běžící proces používá javu?

  1. Jak získat návratovou hodnotu z CHILD PROCESS?

  2. Jak zabít podřízený proces po daném časovém limitu v Bash?

  3. Jak získat podřízený proces z rodičovského procesu