特定のポート範囲でポートが使用されているかどうかを調べる必要があります。Bash Scriptポートの使用状況を取得する
私はphp-fpmプールを作成するためのスクリプトを設定しており、使用されていない次の使用可能ポートを確認できるようにしたいと考えています。
netstat -ntpl | grep [0-9]:${1:-11211} -q ;
は、私はその特定のポートが使用中の場合は見てのために必要なものを私取得しますが、私はポート範囲のためにこれを行うことができますか?言ってよ... 11211 - 12655
範囲をループし、次の "found"の位置で停止する必要がありますか? しかし、これは私のすべてを返す1です。
for i in {11212..12655}
do
netstat -ntpl | grep [0-9]:${1:-i} -q ;
echo $i:$?
done
i=11212;
END=12655;
while [ $i -le $END ]; do
netstat -ntpl | grep [0-9]:${1:-i} -q ;
echo $?;
i=$(($i+1));
done;
あなたは 'netstat'の第4列をチェックしていますよね? – fedorqui
一般に、このアプローチは競争の激しいものです。アプリケーションを実際に試してみると、前のテストを行うよりも失敗したときに次のポートに移動する方がよい(割り当てられたポートのセットは、そのテストを実行するときと実際にソケットをバインドしようとするとき)。アプローチを組み合わせることはできますが、インクリメントとリトライに戻すべきです。 –
申し訳ありません@CharlesDuffyしかし、私はそれがどういう意味かはっきりしていません。技術的に私がしたいことは、その範囲内で次に利用可能なポートを見つけることです。私はループを見つけ、1が提示されると、ループを終了し、見つかったポートを保存します。これは、一度に一人だけが使用するので、私はそれが実行されている複数のインスタンスについて心配していません.... – Kevin