我需要找出端口是否在特定的端口范围内使用。Bash脚本获取端口使用
我正在设置一个脚本来创建php-fpm池,并且希望确保我可以检查未使用的下一个可用端口。
netstat -ntpl | grep [0-9]:${1:-11211} -q ;
获取我什么,我需要看是否特定端口正在使用,但我怎么能做到这一点的端口范围?说... 11211 - 12655
我应该循环一个范围,并停在“找到”下一个可用? 但是,这一切都让我回到了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