Làm thế nào để theo dõi quá trình trẻ em bằng cách sử dụng strace?


104

Tôi đã từng stracegắn liền với một quy trình trong thời gian ngắn. Quá trình tạo ra 90 chủ đề. Khi tôi tìm thấy chuỗi vi phạm, tôi phải cẩn thận tìm kiếm chuỗi mẹ, sau đó là chuỗi ông bà, v.v. trong suốt quá trình root.

Có thủ thuật hoặc công cụ nào để nhanh chóng tìm ra luồng nào đã tạo ra luồng khác không? Hoặc tốt hơn, in cây sáng tạo sợi như thế pstreenào?


Có vẻ như câu trả lời @JeRog nên được chấp nhận.
jww

Câu trả lời:


119

strace -fđể theo dõi quá trình con đã được chỉnh sửa fork().


19

Tôi không thể thấy một cách dễ dàng:

Bạn có thể sử dụng -fftùy chọn với -o filenameđể tạo nhiều tệp (mỗi tệp một tệp).

ví dụ:

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

điều đó sẽ giúp bạn biết cha mẹ nào đã tạo ra cái gì. Có thể điều đó sẽ giúp bạn - ít nhất sau đó bạn có thể tìm kiếm ngược lại.


18

Có một tập lệnh perl được gọi là strace-graph. Đây là một phiên bản từ github . Nó được đóng gói với các phiên bản crosstool-ng của trình biên dịch. Nó hoạt động cho tôi thậm chí đã sử dụng nền tảng chéo.

Hộp ARM Linux.

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

Hộp 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%

Đầu ra có thể được sử dụng để giúp điều hướng nhật ký theo dõi chính.


1
rất tuyệt, đây gần như chính xác là thứ tôi muốn trong ít nhất vài ngày. đáng ngạc nhiên, tôi thậm chí có thể thấy nó trong / usr / share / doc / strace / example / của tôi.
mykhal

0

Để nắm bắt lưu lượng truy cập cho một quy trình, bạn có thể sử dụng strace, như @stackmate đã đề xuất.

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

hoặc xuất nó thành một tệp.

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

-fcho tất cả quá trình phân tách, -scho kích thước chuỗi để in và -okết xuất đầu ra vào một tệp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.