Digamos que tengo esto script.sh
#!/bin/bash
exit_script() {
echo "Printing something special!"
echo "Maybe executing other commands!"
kill -- -$$ # Sends SIGTERM to child/sub processes
}
echo "Some other text"
#other commands here
sleep infinity
Quiero script.sh
ejecutar la función exit_script
siempre que reciba SIGINT
o SIGTERM
Por ejemplo:
killall script.sh # it will send SIGTERM to my script
y quiero que mi script ejecute esto
exit_script() {
echo "Printing something special!"
echo "Maybe executing other commands!"
kill -- -$$ # Sends SIGTERM to child/sub processes
}
Traté de implementar esta característica usando trap
trap exit_script SIGINT SIGTERM
La persona que respondió mi pregunta demostró que estaba equivocado.
pero no funcionó porque trap
parece reaccionar solo a las señales enviadas a los procesos secundarios / secundarios. Como principiante no pude descifrar trap
la página de manual, así que probablemente me perdí la solución.
Supongo que eso es lo que hacen los programas "reales" como Chromium cuando los envías SIGTERM
Desde https://major.io/2010/03/18/sigterm-vs-sigkill/
La aplicación puede determinar qué quiere hacer una vez que se recibe un SIGTERM. Si bien la mayoría de las aplicaciones limpiarán sus recursos y se detendrán, algunas no.