Каждый понедельник в 9 утра UTC что-то посылает HUP
сигнал моему процессу node.js (и я думаю, что HUP отправляется всем процессам, а не только моему). Как мне узнать, какой процесс отправил сигнал HUP
моей программе? В моей программе есть обработчик HUP, который заставляет ее перезапускаться (для перезагрузки конфигурации), поэтому каждый понедельник в 9 утра мой производственный стек перезапускается сам по себе (но продолжает работать, так что все хорошо, просто это очень раздражает).
У меня такое чувство, что это делает systemd, просто я не знаю, какая часть systemd это делает. Есть идеи?
Это установка Debian 11.7.
решение1
Вы можете сделать это с помощьюeBPF:
sudo dnf install bcc-tools
sudo /usr/share/bcc/tools/killsnoop
Вот как это выглядит при отправке SIGHUP
(-1) из процесса с PID
1221229, который является bash
оболочкой, в которой я запускаю kill -1 1221227
процесс с PID
1221227.
[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
Здесь я отправляю SIGHUP процессу sleep
из 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