Nehmen wir an, ich habe das 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
Ich möchte script.sh
die Funktion ausführen, exit_script
wann immer sie empfängt SIGINT
oder SIGTERM
Zum Beispiel:
killall script.sh # it will send SIGTERM to my script
und ich möchte, dass mein Skript dies ausführt
exit_script() {
echo "Printing something special!"
echo "Maybe executing other commands!"
kill -- -$$ # Sends SIGTERM to child/sub processes
}
Ich habe versucht, diese Funktion mit zu implementieren trap
trap exit_script SIGINT SIGTERM
Die Person, die meine Frage beantwortet hat, hat mir das Gegenteil bewiesen.
aber es hat nicht funktioniert, weil trap
es nur auf Signale zu reagieren scheint, die an untergeordnete / untergeordnete Prozesse gesendet werden. Als Anfänger konnte ich die trap
Manpage nicht entziffern , daher habe ich wahrscheinlich die Lösung verpasst.
Ich denke, das ist es, was "echte" Programme wie Chromium tun, wenn Sie sie senden SIGTERM
Von https://major.io/2010/03/18/sigterm-vs-sigkill/
Die Anwendung kann bestimmen, was sie tun möchte, sobald ein SIGTERM empfangen wurde. Während die meisten Anwendungen ihre Ressourcen bereinigen und stoppen, können einige nicht.