[eside-ghost] De bash, subshells y PIDs
Alvaro Uría
fermat en rigel.deusto.es
Mie Feb 6 19:14:27 CET 2008
Aupi,
El 06/02/08 17:11, Arkaitz escribió:
> Enas,
> Estaba hoy peleandome con un bash script cuando he llegado a la siguiente
> situacion.
> Si lanzamos una subshell en background:
> $( sleep 300;echo "feo">subshell.log )&
¿Por qué pones el DOLAR inicial? (¿Para que devuelva algo?)
> Las variables de bash no sirven pues no se alteran en los subshells, con lo
> que $$ y $PPID son iguales tanto en el script como en la subshell.
> Puedo grepear ps y sacar el proceso de los que yo quiero con PID mas alto y
> sera ese, pero no lo quiero hacer asi, o al menos si lo puedo hacer de otra
> manera pos mas mejor.
>
> Alguna idea?
No sé lo que querrás hacer, pero igual te sirve un script tipo el que
preguntaba Saúl, pero usando "wait" "y todo".
->>>>>>>>>>
PID=$$
PIDS=
function informa
{
echo Profundidad: $BASH_SUBSHELL
}
informa
(informa;sleep 9; kill -1 $PID 2>/dev/null) &
(informa;sleep 5;echo Hijo1) & PIDS="$PIDS $!"
(informa;sleep 10;echo Hijo2) & PIDS="$PIDS $!"
trap "echo HUP;kill $PIDS 2>/dev/null" 1
echo Esperando hijos: $PIDS
wait $PIDS
echo exit
<<<<<<<<<<-
Nota: Esta vez, no se espera hasta el final de la "sleep" porque la
señal enviada es SIGTERM y no SIGALRM O:-D (la movida es que esa primera
subshell queda en background y ejecutará esa "kill" al vacÃo, si todo lo
anterior acaba antes)
Espero que te sirva.
Saludos,
Alvaro UrÃa
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre : signature.asc
Tipo : application/pgp-signature
Tamaño : 252 bytes
Descripción: OpenPGP digital signature
Url : https://listas.deusto.es/mailman/private/eside-ghost/attachments/20080206/ceaa0365/signature.bin
Más información sobre la lista de distribución eside-ghost