我需要找出端口是否在特定的端口範圍內使用。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