Io voglio assicurarmi che quando esco dal mio script, che sia per uscita naturale (fine script o exit), o uscita per errore (se c'è set -e) o CTRL+C o kill (il kill semplice... so che il -9 non lo puoi controllare un granchè), i programmi rimasti in backgroud muoiano tutti, compresi i loro figli.
Io invece mi ritrovo che che morto lo script principale, in linea di massima gli altri continuano ad esistere, con parent pid=1, e sono costretto a fare kill manuale di tutti, uno ad uno (o almeno quasi tutti... solitamente per i binari che forkano, morto il padre muore anche il figlio, anche se non sempre)
il caso più semplice:
Codice: Seleziona tutto
#!/bin/bash
./programma & PID=$!
..altro..Codice: Seleziona tutto
#!/bin/bash
./programma & PID=$!
..altro..
wait $PIDCodice: Seleziona tutto
#!/bin/bash
./programma1 > /tmp/log & PID1=$!
tail -f /tmp/log & PID2=$!
wait $PID1
kill $PID2Codice: Seleziona tutto
#!/bin/bash
./programma1 & PID1=$!
while ps $PID1 >/dev/null;do
echo -n .
sleep 1
done
wait $PID1
Ho anche provato ad usare le trap
Codice: Seleziona tutto
#!/bin/bash
trap 'kill $PID' SIGINT # SIGINT corrisponde a ctrl+c
...Idee?
Ciao
01

