Ich bin verwirrt über die Weiterleitung von Signalen an Kindprozesse mit Traps. Sagen wir, ich habe zwei Skripte:Bash Trap '' vs Trap Funktion Signale übergeben
a.sh
#!/bin/bash
# print the process id
echo $$
cleanup() {
rv=$?
echo "cleaning up $rv"
exit
}
sleep 5
trap '' SIGTERM # trap cleanup SIGTERM
echo 'cant stop wont stop'
./b.sh
echo 'can stop will stop'
trap - SIGTERM
sleep 4
echo 'done'
b.sh
#!/bin/bash
sleep 4;
echo 'b done'
Wenn ich a.sh
ausführen und dann aus einem anderen Fenster töten die Prozessgruppe mit kill -- -PGID
wird die SIGTERM ignoriert und nicht an b.sh
weitergegeben. Aber wenn ich trap cleanup SIGTERM
mache, durchläuft das SIGTERM b.sh
und beendet es. Warum gibt meine Falle in einem Fall das Signal und nicht das andere?