Jeden Montag um 9 Uhr UTC sendet etwas ein HUP
Signal an meinen node.js-Prozess (und ich glaube, HUP wird an alle Prozesse gesendet, nicht nur an meinen). Wie finde ich heraus, welcher Prozess das HUP
Signal an mein Programm gesendet hat? Mein Programm hat einen HUP-Handler, der einen Neustart (zum Neuladen der Konfiguration) bewirkt, sodass mein Produktionsstapel jeden Montag um 9 Uhr von selbst neu gestartet wird (aber weiterläuft, also ist alles gut, es ist nur super nervig).
Ich habe das Gefühl, dass es systemd ist, das macht, ich weiß nur nicht, welcher Teil von systemd das macht. Irgendwelche Ideen?
Es ist eine Debian 11.7-Installation.
Antwort1
Dies können Sie tun miteBPF:
sudo dnf install bcc-tools
sudo /usr/share/bcc/tools/killsnoop
So sieht es aus, wenn SIGHUP
(-1) vom Prozess mit PID
1221229 gesendet wird. Dies ist die bash
Shell, in der ich den kill -1 1221227
Prozess mit PID
1221227 ausführe.
[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 ~]$
Ein anderer Weg, diesmal mitftrace:
sudo dnf install trace-cmd
sudo trace-cmd record -e signal
sudo trace-cmd report
Hier sende ich SIGHUP sleep
von einer bash
Shell an einen Prozess:
[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