2014-10-07 19 views
5

Yeni bir işlem yürütüldüğünde, kapatıldığında ve durum değiştiğinde (yani durdurulan, sayfalanmış vb.) Bildirim alınabilir mi (geri arama veya benzeri)? Kullanıcı arazisinde,/proc dizin dizinini kurmak çok kolay olurdu.Linux Kernel Modülünde Yeni İşlemlerin Dinlenmesi

+0

"kullanıcı topraklarda,/proc üzerinde bir dizin dinleyici kurmak kolay olurdu" Aslında hayır, işe yaramıyor. Ancak [/ proc konnektörü] (http://stackoverflow.com/questions/6075013/linux-detect-launching-of-programs). – duskwuff

cevap

2

Kprobları düşündünüz mü? Bazı çekirdek kodları çalıştırıldığında geri arama işlevini yürütmek için kprobları kullanabilirsiniz. Örneğin, this example'daki gibi yeni işlemler oluşturulduğunda uyarmak için do_fork kprobe ekleyebilirsiniz.

Benzer şekilde, işlemler çıktığında yakalamak için do_exit() için bir sonda ekleyebilirsiniz.

Durumu değiştirmek için, sched_switch() üzerinde bir iade probu olabilir ve durum değiştiğinde yakalanabilir. Uygulamanıza bağlı olarak, bu çok fazla yük ekleyebilir. https://sourceware.org/systemtap/documentation.html

Diğer ayrıntılar: Yalnızca, veri toplamak biraz ışık işlem gerçekleştirmek isteyen ve çekirdek modülü ile çok daha fazlasını isteyen değilseniz

, SystemTap'ı bir çekirdek modülü yazma için iyi bir alternatif olabilir kprobes tarih: https://www.kernel.org/doc/Documentation/kprobes.txt

sched_switch() SystemTap'ı örneği: https://sourceware.org/systemtap/examples/profiling/sched_switch.stp