
유사한 문자열 "tokio-runtime-worker"를 생성하는 bash가 있습니다. 카니발은 더 이상 죽지 않았습니다. "tokio-runtime-worker"의 출력에서 bash를 종료하고 다시 실행해야 합니다(루프).
"tokio-runtime-worker" 스레드가 " Result::unwrap()
값 호출"로 인해 Err
패닉이 발생합니다 .
답변1
다음을 수행할 수 있습니다( zsh
A&T ksh 또는 에서 bash -O lastpipe
).
while
sh -c 'echo "$$"; exec cmd 2>&1' | {
IFS= read -r pid &&
grep -q tokio-runtime-worker
}
do
kill -s PIPE "$pid"
done
( cmd
출력은 다시 시작하려는 명령입니다 tokio-runtime-worker
).
다른 셸에서는 서브셸에서 실행되는 파이프라인의 마지막 부분 중 일부가 $pid
기본 셸 프로세스에서 설정되지 않기 때문에 이것이 반드시 작동하지는 않습니다. 하지만 다음과 같이 할 수 있습니다.
while
sh -c 'echo "$$"; exec cmd 2>&1' | {
IFS= read -r pid &&
grep -q tokio-runtime-worker &&
{ kill -s PIPE "$pid" || true; }
}
do
continue
done
여기서 kill
(우리가 사용하는 값)은 $pid
변수가 설정된 동일한 하위 쉘에서 실행됩니다.pid
read