내 node.js 프로세스에 HUP 신호를 보낸 프로세스를 찾는 방법은 무엇입니까?

내 node.js 프로세스에 HUP 신호를 보낸 프로세스를 찾는 방법은 무엇입니까?

매주 월요일 오전 9시(UTC)에 뭔가가 HUP내 node.js 프로세스에 신호를 보냅니다(그리고 HUP가 내 프로세스뿐만 아니라 모든 프로세스로 전송되고 있다고 생각합니다). 어떤 프로세스가 HUP내 프로그램에 신호를 보냈는지 어떻게 알 수 있나요 ? 내 프로그램에는 구성을 다시 로드하기 위해 다시 시작하는 HUP 핸들러가 있으므로 매주 월요일 오전 9시에 프로덕션 스택이 자체적으로 다시 시작됩니다(그러나 계속 실행되므로 모든 것이 양호하며 매우 짜증납니다).

systemd가 그 일을 하고 있다는 느낌이 들지만, systemd의 어느 부분이 그 일을 하고 있는지 모르겠습니다. 어떤 아이디어가 있나요?

데비안 11.7 설치입니다.

답변1

당신은 이것을 할 수 있습니다eBPF:

sudo dnf install bcc-tools
sudo /usr/share/bcc/tools/killsnoop

다음은 1221227을 사용하여 프로세스를 실행하는 셸인 1221229가 있는 SIGHUP프로세스에서 (-1)을 보낼 때 나타나는 모습입니다 .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 ~]$

또 다른 방법으로 이번에는ftrace:

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

관련 정보