どのプロセスが node.js プロセスに HUP シグナルを送信したかを調べるにはどうすればよいでしょうか?

どのプロセスが node.js プロセスに HUP シグナルを送信したかを調べるにはどうすればよいでしょうか?

毎週月曜日の午前 9 時 (UTC) に、何かが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

1221229SIGHUPのプロセスから (-1)を送信すると、次のようになります。これは、1221227のプロセスを実行するシェルです。PIDbashkill -1 1221227PID

[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ここでは、シェルからプロセスに 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

関連情報