每个星期一 UTC 上午 9 点,某个进程都会HUP
向我的 node.js 进程发送一个信号(我认为 HUP 会发送给所有进程,而不仅仅是我的进程)。如何找到哪个进程HUP
向我的程序发送了信号?我的程序有一个 HUP 处理程序,可以让它重新启动(重新加载配置),所以每个星期一上午 9 点,我的生产堆栈都会自行重新启动(但会继续运行,所以一切都很好,只是非常烦人)。
我感觉这是 systemd 做的,只是不知道 systemd 的哪个部分在做。有什么想法吗?
这是 Debian 11.7 安装。
答案1
你可以这样做增强型BPF:
sudo dnf install bcc-tools
sudo /usr/share/bcc/tools/killsnoop
SIGHUP
下面是从带有 1221229 的进程发送 (-1)时的情况PID
,这是bash
我运行kill -1 1221227
带有PID
1221227 的进程的 shell。
[mvutcovi@laptop-rh-old ~]$ sudo /usr/share/bcc/tools/killsnoop
TIME PID COMM SIG TPID RESULT
01:38:35 1221229 bash 1 1221227 0
^C[mvutcovi@laptop-rh-old ~]$
另一种方式,这次ftrace:
sudo dnf install trace-cmd
sudo trace-cmd record -e signal
sudo trace-cmd report
sleep
这里我从 shell 向一个进程发送 SIGHUP bash
:
[mvutcovi@laptop-rh-old ~]$ sudo trace-cmd record -e signal
[mvutcovi@laptop-rh-old ~]$ sudo trace-cmd report
version = 7
cpus=8
sleep-1221703 [001] 1248579.487042: signal_deliver: sig=9 errno=0 code=0 sa_handler=0 sa_flags=0
sleep-1221703 [001] 1248579.487362: signal_generate: sig=17 errno=0 code=2 comm=bash pid=1221675 grp=1 res=0
[mvutcovi@laptop-rh-old ~]$ sudo rm trace.dat