매주 월요일 오전 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)을 보낼 때 나타나는 모습입니다 .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 ~]$
또 다른 방법으로 이번에는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