![텍스트 출력 후 프로그램을 종료하고 다시 실행하세요.](https://linux55.com/image/209946/%ED%85%8D%EC%8A%A4%ED%8A%B8%20%EC%B6%9C%EB%A0%A5%20%ED%9B%84%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%84%20%EC%A2%85%EB%A3%8C%ED%95%98%EA%B3%A0%20%EB%8B%A4%EC%8B%9C%20%EC%8B%A4%ED%96%89%ED%95%98%EC%84%B8%EC%9A%94..png)
유사한 문자열 "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