GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara melacak proses anak menggunakan strace?

strace -f untuk melacak proses anak yaitu fork() ed.


Ada skrip perl bernama strace-graph . Ini adalah versi dari github. Itu dikemas dengan crosstool-ng versi kompiler. Ini berfungsi untuk saya bahkan menggunakan lintas platform.

Kotak ARM Linux.

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

Kotak 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%

Outputnya dapat digunakan untuk membantu menavigasi log pelacakan utama.


Saya tidak bisa melihat cara yang mudah:

Anda bisa menggunakan -ff opsi dengan -o filename untuk menghasilkan banyak file (satu per pid).

misalnya:

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

itu akan membantu Anda melihat orang tua mana yang menciptakan apa. Mungkin itu akan membantu Anda - setidaknya Anda dapat menelusuri mundur.


Linux
  1. Cara mendapatkan PID dari proses anak bercabang di skrip Shell

  2. Bagaimana saya bisa tahu proses mana yang menggunakan swap?

  3. Bagaimana cara menentukan proses berjalan apa yang menggunakan java?

  1. Bagaimana cara memeriksa apakah suatu proses masih berjalan menggunakan Python di Linux?

  2. Bagaimana cara membuat proses anak mati setelah orang tua keluar?

  3. Bagaimana systemd menangani kematian anak dari proses yang dikelola?

  1. Bagaimana menemukan semua proses anak?

  2. Bagaimana cara mendapatkan nilai pengembalian dari PROSES ANAK?

  3. Bagaimana cara membunuh proses anak setelah batas waktu tertentu di Bash?