[eside-ghost] De bash, subshells y PIDs
Arkaitz
arkaitzj en gmail.com
Mie Feb 6 17:11:01 CET 2008
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 )&
Resulta que el proceso queda detacheado de su padre(bash script original) y
NO muere cuando muere su padre, si no que ahora pasa a ser hijo de init, que
bueno, no me afecta en nada, pero no lo sabia.
El caso es que despues de eso recojo el PID del proceso hijo para matarlo
despues.
Se recoje asi:
sonPID=$!
Justo despues de lanzar un proceso en background la variable $! contiene su
PID.
El caso es que monitorizando y tal me he dado cuenta de que lanzado la
subshell asi se crean dos procesos, uno hijo del otro, aparte del original,
y $! solo devuelve el del padre(no el abuelo) y yo quiero el hijo, porque si
mato al padre(que era hijo de init) el hijo tampoco muere y pasa a ser hijo
de init a su vez.
Es un tema porque aunque los 2 procesos se crean seguidos y llevan PIDs
consecutivos no me puedo fiar de eso para establecer el PID del hijo que
hace lo que yo quiero.
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?
byez
--
Arkaitz
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://listas.deusto.es/mailman/private/eside-ghost/attachments/20080206/5ce7a0d6/attachment.htm
Más información sobre la lista de distribución eside-ghost