Diciamo che ho questo 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
Voglio script.sh
eseguire la funzione exit_script
ogni volta che riceve SIGINT
o SIGTERM
Ad esempio:
killall script.sh # it will send SIGTERM to my script
e voglio che il mio script esegua questo
exit_script() {
echo "Printing something special!"
echo "Maybe executing other commands!"
kill -- -$$ # Sends SIGTERM to child/sub processes
}
Ho provato a implementare questa funzione usando trap
trap exit_script SIGINT SIGTERM
La persona che ha risposto alla mia domanda mi ha dimostrato che mi sbagliavo.
ma non ha funzionato perché trap
sembra reagire solo ai segnali inviati a processi secondari / secondari. Come principiante non sono riuscito a decifrare trap
la pagina man di così ho probabilmente perso la soluzione.
Immagino sia quello che fanno i programmi "reali" come Chromium quando li invii SIGTERM
Da https://major.io/2010/03/18/sigterm-vs-sigkill/
L'applicazione può determinare cosa vuole fare una volta ricevuto un SIGTERM. Mentre la maggior parte delle applicazioni pulirà le loro risorse e si fermerà, alcune potrebbero non farlo.