有一个 bash 可以生成类似的字符串“tokio-runtime-worker”。狂欢并没有进一步消亡。在“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
)。
在其他 shell 中,这不一定有效,因为某些在子 shell 中运行管道的最后一部分,不会$pid
在主 shell 进程中设置。但是你可以这样做:
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
的同一子 shell 中运行。pid
read