GNU/Linux >> Linux Esercitazione >  >> Linux

Come tenere traccia del processo figlio usando strace?

strace -f per tracciare il processo figlio che è fork() ed.


C'è uno script perl chiamato strace-graph . Ecco una versione da github. È impacchettato con crosstool-ng versioni dei compilatori. Per me funziona anche se è multipiattaforma.

Scatola ARM Linux.

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

Scatola Linux X86_64.

$ ./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%

L'output può essere utilizzato per facilitare la navigazione nel registro di traccia principale.


Non riesco a vedere un modo semplice:

Potresti usare il -ff opzione con -o filename per produrre più file (uno per pid).

es:

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

questo ti aiuterebbe a vedere quale genitore ha creato cosa. Forse questo ti aiuterebbe, almeno allora potresti cercare all'indietro.


Linux
  1. Come verificare se un processo è ancora in esecuzione utilizzando Python su Linux?

  2. Come trovare tutti i processi figlio?

  3. Come ottenere un valore di ritorno da CHILD PROCESS?

  4. Come uccidere un processo figlio dopo un determinato timeout in Bash?

  5. Come ottenere il PID dal processo figlio biforcuto nello script della shell

Come uccidere un processo in Linux

Come tracciare l'esecuzione del programma utilizzando il comando Strace di Linux

Come visualizzare le informazioni di processo utilizzando Procs su Linux

Come elaborare in batch le immagini utilizzando Converseen in Ubuntu 20.04

Come uccidere i processi in Linux usando kill, killall e pkill

Come tracciare e tracciare un processo Linux