jdi*_*zle 12 unix linux signals
如果我有一个接收来自其他进程的信号的进程,有没有办法让我以某种方式告诉哪个进程(如果有的话)发送了一个信号?
strace 让我跟踪一个进程收到的信号,但不允许我跟踪发出进程的信号.
fir*_*iro 10
对于 Linux 用户来说,有一种非常简单的方法来识别信号源。比如下面是查找哪个任务给其他任务发送了SIGKILL。
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
Run Code Online (Sandbox Code Playgroud)
一个例子是,当我使用“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
Run Code Online (Sandbox Code Playgroud)
如果没有上述“sig==9”过滤器,“trace”将显示任务之间发送的所有信号。