BashでTCP接続可能になるまでまち、接続できたら終了する方法を調べた。

方法はncコマンドを使用する方法とBashだけでできる方法があるらしいが、ncコマンドは大抵デフォルトでインストールされていないので、Bashだけで行いたい。

対応

以下のコードで1秒間隔でTCP接続できるまで待ち、30秒経過した場合はタイムアウトする。

HOST=postgres
PORT=5432
timeout 30 bash -c "until printf '' 2>>/dev/null >>/dev/tcp/${HOST}/${PORT}; do sleep 1; done"