如何找到哪個程序向我的 node.js 進程發送了 HUP 訊號?

如何找到哪個程序向我的 node.js 進程發送了 HUP 訊號?

每個星期一上午 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 ~]$

另一種方式,這次是追蹤

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

相關內容