MAIN PARENT HEADER SCRIPT AVANT LA MAIN LOOP :::
#Catch control-c and clean up testd instances if necessary
cleanup() {
clear
echo "Caught Signal. Shutting Down MAIN."
if [ "$MAIN_on" -eq 1 ]
then
M_shutdown
fi
exit 1
}
Dans le corps principal du script, comme vous engendrez vous maintenir sous-processus un tableau avec les proc ids de chacun. Pour charger le PID dans le tableau, définissez la valeur du dernier processus engendré par exemple. mettre le suivant après chaque sous-shell spawn.
proc_id_array[1]=$!
Contenu du M_shutdow serait quelque chose comme ...
M_shutdown() {
if [ "$MAIN_on" -eq 1 ]
then
echo "Stopping Main"
echo "shutting down active subscripts"
count_proc_id=1
while [ "$count_proc_id" -lt "$max_proc_id" ]
do
kill ${proc_id_array[$count_proc_id]} > /dev/null 2>&1
DATE=$(date +%m%d%y-%k:%M)
echo "$DATE: ${proc_name_array[$count_proc_id]} \(PID: ${proc_id_array[$count_proc_id]}\) stopped." >> $logfile
proc_id_array[$count_proc_id]="A"
count_proc_id=`expr $count_proc_id + 1`
done
echo "MAIN stopped"
MAIN_on=0
sleep 5
else
echo "MAIN already stopped."
sleep 1
fi
}
Il serait utile que vous montriez des exemples spécifiques d'un parent abrégé et d'un enfant. –
Voir ma réponse à votre autre question pour une solution possible. http://stackoverflow.com/questions/2524937/how-to-send-a-signal-sigint-from-script-to-script-bash –