Estou usando o seguinte para esperar até que uma porta seja aberta.
while ! nc -z 127.0.0.1 8080; do sleep 0.1; done
como o acima pode ser modificado para verificar várias portas. Portanto, o script deve parar somente quando todas as portas estiverem ocupadas, por exemplo, 8080, 8081 e 8082.
Responder1
Você precisa executar nc
separadamente para cada porta:
while ! (nc -z 127.0.0.1 8080 && nc -z 127.0.0.1 8081 && nc -z 127.0.0.1 8082)
do sleep 0.1
done
(dividido em várias linhas para facilitar a leitura)
Isso usa um subshell shell com uma lista de comandos com um &&
operador lógico "e"; o segundo nc
comando só é executado se o primeiro for bem-sucedido, etc.; assim que todos nc
os comandos forem bem-sucedidos, o status de saída do subshell é verdadeiro, isso é negado pelo !
e o while
loop termina.