這裏我想創建一個Bash腳本,我想知道應用程序是否已經在監聽某個端口,通過使用命令netstat
。Bash腳本如何在10分鐘的時間限制內循環「while」運行條件
如果端口已經被監聽,那麼他會調出結果。
如果不是,腳本將以10分鐘的時間限制重複netstat
命令,如果超過10分鐘,命令將不會執行,結果是錯誤。
如果在終端運行手冊netstat
命令:
netstat -atn | grep 8779
結果:
[email protected]:~$ erp-enterprise/bin$ netstat -atn | grep 8779
tcp6 0 0 :::8779 :::* LISTEN
下面把我所造的劇本,接下來會發生什麼?
#!/bin/bash
NETSTAT=`netstat -ant | grep :::8779`
echo $NETSTAT
VAR_ERR="Port APP 8779, not listen !"
VAR_SUCS="Port APP 8779, LISTEN"
while [[ "$NETSTAT" = "" ]] ;
do
echo $NETSTAT
if [[ -z "$NETSTAT" ]];
then
echo $VAR_ERR
NETSTAT=`netstat -ant | grep :::8082`
else
echo $VAR_SUCS
exit 0
done
echo $VAR_SUCS
如果應用程序未在偵聽端口,腳本將繼續循環。
結果:
[email protected]:~$ ./listen_port.sh
Port APP 8082, not listen !
Port APP 8082, not listen !
Port APP 8082, not listen !
Port APP 8082, not listen !
Port APP 8082, not listen !
如果該應用程序已在偵聽的端口,腳本會停止並彈出結果。
[email protected]:~$ ./listen_port.sh
Port APP 8082, not listen !
Port APP 8082, not listen !
Port APP 8082, not listen !
Port APP 8082, not listen !
Port APP 8082, not listen !
Port APP 8779, LISTEN
如何爲腳本停止提供時間限制?
不確定*什麼*應該有一個時間限制,但你可以重試一個循環中的東西直到經過一段時間,或者你可以使用['timeout'](http://linux.die.net/man/1/timeout)運行命令。 – Biffen
哦,是的,先生..但我試圖解釋上面,顯示我的bash腳本,以及如何繼續我的腳本?如何添加腳本?所以我的意思是,先生 – Yuday
你想在腳本中有一個超時*還是你想用超時執行它? (請不要叫我'先生'。) – Biffen