Untuk pengguna Linux, ada cara yang sangat mudah untuk mengidentifikasi sumber sinyal. Misalnya, berikut ini untuk menemukan tugas mana yang mengirim SIGKILL ke orang lain.
cd /sys/kernel/debug/tracing
echo 'sig==9' > events/signal/signal_generate/filter
echo 1 > events/signal/signal_generate/enable
: > trace
echo 1 > tracing_on
tail -f trace
Salah satu contohnya, saat saya menggunakan 'pkill -9 sleep'.
# cat trace
[...]
pkill-2982 [001] d... 750347.835838: signal_generate: sig=9 errno=0 code=0 comm=sleep pid=2981 grp=1 res=0
Tanpa filter 'sig==9' di atas, 'jejak' akan menampilkan semua sinyal yang dikirim di antara tugas.
Bukan dari luar proses. Argumen kedua untuk penangan sinyal adalah siginfo_t
struktur yang berisi PID dari proses pengiriman sebagai salah satu anggotanya. Lihat sigaction(2)
untuk detail lebih lanjut.
Ptrace
dapat digunakan untuk mendeteksi pengirim juga. Ada ptrace(GETSIGINFO)
panggilan, yang akan memberi debugger kesempatan untuk membaca (dan, mungkin, mengubah) siginto_t
struktur.
per proses direktori dump inti yang dapat dikonfigurasi
Karakter yang diizinkan dalam nama variabel lingkungan Linux