プロセスがポートで要求の受け入れを開始するのを待つようにスクリプトにどのように指示しますか?

プロセスがポートで要求の受け入れを開始するのを待つようにスクリプトにどのように指示しますか?

プロセスが特定のポートで要求の受け入れを開始するのを待つコマンドが必要です。

Linuxにこのようなことができるものはありますか?

while (checkAlive -host localhost -port 13000 == false)
  do some waiting

...

ベストアンサー1

サーバーが接続を受け入れていることを確認する最良のテストは、実際に接続を試みることです。サーバーが使用しているプロトコルに関係なく、通常のクライアントを使用してno-opコマンドを使用してみてください。

軽量TCPまたはUDPクライアントが必要な場合は、以下を使用してシェルから簡単に駆動できます。インターネット猫。会話をプログラムする方法はプロトコルによって異なります。多くのプロトコルでは、サーバーが一部の入力への接続を閉じると、netcatは終了します。

while ! echo exit | nc localhost 13000; do sleep 10; done

接続を確立したら、netcatに終了するように指示することもできます。接続がない場合は1を返し、接続がある場合は0を返すため、出力は無効になります。 netcatのバージョンに応じて、次のコマンドのいずれかまたは両方をサポートできます。

while ! nc -z localhost 13000 </dev/null; do sleep 10; done
while ! nc -q 1 localhost 13000 </dev/null; do sleep 10; done

別のアプローチは、サーバープロセスがリスニングソケットを開くまで待つことです。

while netstat -lnt | awk '$4 ~ /:13000$/ {exit 1}'; do sleep 10; done

Mac OSを使用している場合、netstatはわずかに異なる出力形式を使用するため、次の形式が必要です。

while netstat -lnt | awk '$4 ~ /\.13000$/ {exit 1}'; do sleep 10; done

あるいは、特定のプロセスIDをターゲティングすることもできます。

while ! lsof -n -Fn -p $pid | grep -q '^n.*:13000$'; do sleep 10; done

ptrace.

おすすめ記事