Signalbehandlung in einer shell-Skript

Folgenden ist ein shell-Skript (myscript.sh) ich habe:

#!/bin/bash

sleep 500 &

Aprogram arg1 arg2  # Aprogram is a program which runs for an hour.

echo "done"

Startete ich das in einem terminal, und von einem anderen terminal gab ich 'kill -INT 12345'. 12345 ist die pid myscript.sh.

Nach einer Weile kann ich sehen, dass beide myscript.sh und Aprogram tot gewesen. Allerdings 'sleep 500 &' noch läuft.

Kann mir jemand erklären, warum dieses Verhalten?

Auch, wenn ich ausgestellt, ein SIGINT signal an den 'myscript.sh' was genau ist passiert? Warum ist 'Aprogram' getötet und warum nicht 'schlafen' ? Wie ist das signal INT immer übertragen es ' s child-Prozesse?

Was genau ist der beabsichtigte Zweck sleep 500 & überhaupt? Scheint ein relativ Wertloser Abfall eines Prozesses...

InformationsquelleAutor ernesto | 2014-04-04

Schreibe einen Kommentar