如何找到哪个进程向我的 node.js 进程发送了 HUP 信号?

如何找到哪个进程向我的 node.js 进程发送了 HUP 信号?

每个星期一 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带有PID1221227 的进程的 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

相关内容