¿Salir del script de un proceso en segundo plano?

¿Salir del script de un proceso en segundo plano?

Estoy mirando wpa_supplicantpara poder eliminar mi script si la contraseña es incorrecta.

Pongo en contexto todo el bloque de código a continuación. Puedo ver la echoejecución pero exitno parece detener mi script principal.

  (sudo stdbuf -o0 wpa_supplicant -Dwext -i$wifi -cwifi.conf 2>&1 \
    | grep -m 1 "pre-shared key may be incorrect" \
    && echo I see this \
    && exit) &

Sospecho que exitaquí simplemente está matando un hilo que ha estado en segundo plano.

¿Es ese el caso? Si es así, ¿cómo puedo ser killel padre aquí?

Respuesta1

Puede pasar el pidscript principal al subshell y luego killcuando lo desee:

export mypid=$$

(sudo stdbuf -o0 wpa_supplicant -Dwext -i$wifi -cwifi.conf 2>&1 \
| grep -m 1 "pre-shared key may be incorrect" \
&& echo I see this \
&& kill $mypid) &

Respuesta2

Correcto, exitestá afectando el proceso que ha estado en segundo plano, disponiendo un estado de salida cero. No lo llamaría "matar", ya que el proceso estaba a punto de detenerse de todos modos.

Ejecute el comando wpa en segundo plano y realice un seguimiento de su PID para no tener que usarlo killall:

bash -c 'echo $$ > /tmp/pid; exec wpa_supplicant 2>&1 > /tmp/out' &
sleep 1
egrep 'pre-shared key may be incorrect' /tmp/out && kill `cat /tmp/pid`

Lo sé, tu comando wpa es un poco más largo, lo abrevié para llamar la atención sobre las partes importantes.

información relacionada