每個星期一上午 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 ~]$
另一種方式,這次是追蹤:
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