2014-10-07 13 views
5

Có thể nhận thông báo (qua gọi lại hoặc tương tự) khi một quy trình mới được thực thi hay không, khi nào một quá trình được đóng lại và khi trạng thái thay đổi (tức là dừng, phân trang, vv)? Trong vùng đất người dùng, sẽ dễ dàng thiết lập trình lắng nghe thư mục trên/proc.Lắng nghe các quy trình mới trong Mô-đun hạt nhân Linux

+0

"Trong sử dụng đất, nó sẽ dễ dàng để thiết lập một người biết lắng nghe thư mục trên/proc" Trên thực tế, không, điều đó không hiệu quả. Nhưng [kết nối/proc không] (http://stackoverflow.com/questions/6075013/linux-detect-launching-of-programs). – duskwuff

Trả lời

2

Bạn đã xem xét kprobes chưa? Bạn có thể sử dụng kprobes để thực hiện một hàm gọi lại khi một số mã nhân được thực thi. Ví dụ: bạn có thể thêm do_fork kprobe để cảnh báo khi các quy trình mới được tạo như trong this example.

Tương tự, bạn có thể thêm đầu dò cho do_exit() để bắt khi thoát khỏi quy trình.

Để thay đổi trạng thái, bạn có thể có đầu dò trở lại trên sched_switch() và bắt khi trạng thái thay đổi. Tùy thuộc vào ứng dụng của bạn, điều này có thể thêm quá nhiều chi phí.

Nếu bạn chỉ muốn thu thập dữ liệu, thực hiện một số chế biến ánh sáng, và không tìm cách để làm nhiều hơn nữa với các mô-đun hạt nhân, systemtap có thể là một lựa chọn tốt để viết một mô-đun hạt nhân: https://sourceware.org/systemtap/documentation.html

Chi tiết trên kprobes: https://www.kernel.org/doc/Documentation/kprobes.txt

sched_switch() systemtap dụ: https://sourceware.org/systemtap/examples/profiling/sched_switch.stp

Các vấn đề liên quan