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
cevap
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
"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