wpa_supplicant
비밀번호가 틀리면 스크립트를 종료할 수 있도록 지켜보고 있습니다 .
아래 전체 코드 블록의 배경을 설명합니다. echo
실행을 볼 수 있지만 exit
기본 스크립트가 중지되지 않는 것 같습니다.
(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) &
exit
여기가 배경에 있는 스레드를 죽이고 있는 것 같습니다 .
그런가요? 그렇다면 kill
여기서 어떻게 부모가 될 수 있습니까?
답변1
pid
메인 스크립트를 서브셸에 전달한 다음 kill
원할 때 전달할 수 있습니다 .
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) &
답변2
맞습니다. exit
종료 상태를 0으로 조정하여 백그라운드에 있는 프로세스에 영향을 미치고 있습니다. 어쨌든 프로세스가 중단되기 직전이었기 때문에 나는 그것을 "살인"이라고 부르지 않을 것입니다.
백그라운드에서 wpa 명령을 실행하고 PID를 추적하여 다음을 사용할 필요가 없도록 하십시오 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`
알아요, wpa 명령이 조금 더 길기 때문에 중요한 부분에 주의를 환기시키기 위해 축약했습니다.