毎週月曜日の午前 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のプロセスを実行するシェルです。PID
bash
kill -1 1221227
PID
[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