GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie verfolgt man einen untergeordneten Prozess mit strace?

strace -f um den untergeordneten Prozess zu verfolgen, der fork() ist Aufl.


Es gibt ein Perl-Skript namens strace-graph . Hier ist eine Version von github. Es ist mit crosstool-ng gepackt Versionen von Compilern. Es funktioniert bei mir sogar plattformübergreifend.

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%

Die Ausgabe kann verwendet werden, um beim Navigieren im Hauptablaufverfolgungsprotokoll zu helfen.


Ich sehe keinen einfachen Weg:

Sie könnten den -ff verwenden Option mit -o filename um mehrere Dateien zu erzeugen (eine pro PID).

zB:

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

das würde Ihnen helfen zu sehen, welcher Elternteil was erstellt hat. Vielleicht würde dir das helfen - dann könntest du wenigstens rückwärts suchen.


Linux
  1. Wie finde ich alle untergeordneten Prozesse?

  2. Wie erhalte ich einen Rückgabewert von CHILD PROCESS?

  3. So erhalten Sie einen untergeordneten Prozess aus einem übergeordneten Prozess

  4. Wie beendet man den Prozess von Python mit PID?

  5. Woher weiß ich, welcher Prozess Swap verwendet?

So beenden Sie einen Prozess in Linux

So verfolgen Sie die Programmausführung mit dem Linux-Strace-Befehl

So zeigen Sie Prozessinformationen mit Procs unter Linux an

So verarbeiten Sie Bilder im Stapelbetrieb mit Converseen in Ubuntu 20.04

So beenden Sie Prozesse in Linux mit kill, killall und pkill

So verfolgen und verfolgen Sie einen Linux-Prozess