我有一个脚本可以在 4000-4004 端口上启动 5 个服务。我希望阻止该脚本,直到所有脚本都启动为止。以下对我有用。
while ! nc -vz localhost 4000; do sleep 1; done
while ! nc -vz localhost 4001; do sleep 1; done
while ! nc -vz localhost 4002; do sleep 1; done
while ! nc -vz localhost 4003; do sleep 1; done
while ! nc -vz localhost 4004; do sleep 1; done
上面唯一的问题是如果说 4002 仍然没有启动,它会继续等待它,而我没有关于 4003 和 4004 的信息。
我想做的是以某种方式并行运行所有这些并打印出每个端口的状态。只有当所有端口都启动时,它才会在该块之后继续,否则它会阻塞并打印出哪些端口是启动和关闭的。
(可选地,我还需要添加一些超时,但是一旦我知道如何执行上述操作,这应该是可行的。)
非常感谢。
编辑:
以下对我很有用:
$ parallel --timeout 300 -j0 'while ! nc -vz localhost {}; do sleep 10; done; echo {} is open' ::: {4000..4004} 5001 || { echo "One or more serves failed to start. Exiting.."; exit 1; }
注意:确保在安装后运行以下命令。参考链接
$ sudo rm /etc/parallel/config