enviar señal entre scripts (bash)
Tengo un pequeño problema, probablemente es una pregunta estúpida, pero comencé a aprender bash hace aproximadamente una semana ... Tengo 2 script, a.sh y b.sh. Necesito hacer que ambos corran constantemente. b.sh debería esperar una señal de a.sh
(Estoy tratando de explicar: a.sh y b.sh ejecutan -> a.sh envía una señal a b.sh -> b.sh atrapa la señal, hace algo -> a.sh hace otra cosa y luego envía otra señal -> señal de trampas b.sh, hace algo -> etc.)
Esto es lo que he intentado:
ceniza:
#!/bin/bash
./b.sh &;
bpid=$!;
# do something.....
while true
do
#do something....
if [ condition ]
then
kill -SIGUSR1 $bpid;
fi
done
b.sh:
#!/bin/bash
while true
do
trap "echo I'm here;" SIGUSR1;
done
Cuando ejecuto a.sh no obtengo salida de b.sh, incluso si redirijo la salida estándar a un archivo ... Sin embargo, cuando ejecuto b.sh en segundo plano desde mi shell bash, parece responder a mi SIGUSR1 (enviado con el mismo comando, directamente desde el shell) (Estoy obteniendo el resultado correcto) ¿Qué me falta?
EDITAR: este es un ejemplo simple que estoy tratando de ejecutar:
ceniza:
#!/bin/bash
./b.sh &
lastpid=$!;
if [ "$1" == "something" ]
then
kill -SIGUSR1 $lastpid;,
fi
b.sh:
#!/bin/bash
trap "echo testlog 1>temp" SIGUSR1;
while true
do
wait
done
No puedo obtener el archivo "temp" cuando ejecuto a.sh. Sin embargo si ejecuto./b.sh &
y entonceskill -SIGUSR1 PIDOFB
manualmente, todo funciona bien ...