Я использую следующую команду, чтобы дождаться открытия порта.
while ! nc -z 127.0.0.1 8080; do sleep 0.1; done
как можно изменить вышесказанное для проверки нескольких портов. Так что скрипт должен останавливаться только тогда, когда все порты заняты, например 8080, 8081 и 8082.
решение1
Вам необходимо выполнить команду nc
отдельно для каждого порта:
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
(разбито на несколько строк для удобства чтения)
Здесь используется подоболочка оболочки со списком команд с логическим &&
оператором «и»; вторая nc
команда выполняется только в случае успешного выполнения первой и т. д.; после nc
успешного выполнения всех команд статус выхода подоболочки становится истинным, это отменяется оператором , !
и while
цикл завершается.