Як відслідковувати процес дитини за допомогою strace?


104

Раніше я straceкоротко приєднувався до процесу. Процес створив 90 ниток. Коли я знайшов ображаючу нитку, мені довелося втомливо шукати батьківську нитку, потім бабусю та дідусь і так далі до кореневого процесу.

Чи є хитрість чи інструмент, щоб швидко зрозуміти, яка нитка створила іншу? Або ще краще, надрукуйте дерево творінь ниток, як pstree?


Схоже, відповідь @JeRog слід прийняти.
jww

Відповіді:



19

Я не бачу простого способу:

Ви можете скористатися -ffпараметром із -o filenameдля створення декількох файлів (по одному на pid).

наприклад:

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

це допоможе вам побачити, хто з батьків створив що. Можливо, це допоможе тобі - принаймні тоді ти можеш шукати назад.


18

Існує сценарій Perl, який називається strace-graph. Ось версія від github . Він упакований з crosstool-ng версіями компіляторів. Для мене працює навіть використовувана кросова платформа.

Ящик ARM Linux.

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

Вихід може бути використаний для навігації в головному журналі слідів.


1
дуже приємно, це майже саме те, чого я хотів принаймні кілька днів. дивно, що я навіть бачу це в моєму / usr / share / doc / strace / example /.
mykhal

0

Для отримання трафіку для одного процесу ви можете використовувати strace, як @stackmate запропонував.

strace -f -e trace=network -s 10000 -p <PID>;

або вивести його у файл.

strace -f -e trace=network -s 10000 -o dumpfile -p <PID>

-fдля всіх роздрібнених процесів, -sдля розміру рядка для друку та -oскидання виводу у файл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.