ここで、アプリケーションが既にポートをリッスンしているかどうかを知りたいBashスクリプトを作成したいと思います。コマンドnetstat
を使用してください。Bashスクリプトの実行方法 "if"ループ中の "while" 10分制限付き
ポートが既に聴取されていた場合は、結果を表示します。
もしそうでなければ、スクリプトはnetstat
コマンドを10分の時間制限で繰り返し、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
停止するスクリプトに時間制限を与えるにはどうすればよいですか?上記のコマンドが/path/to/your_script.sh
を開始し、それはそれ自身の上で終了していない場合は、10分後に終了します
timeout 10m /path/to/your_script.sh
:
わからない*時間制限はありますが、ループ内で何かをやり直すことができます一定の時間が経過するか、['timeout'](http://linux.die.net/man/1/timeout)でコマンドを実行することができます。 – Biffen
ああ、先生。上で説明して、私のbashスクリプトを表示しようとしましたが、スクリプトを続けるにはどうすればいいですか?どのようにスクリプトの追加?だから私はそれを意味します。 – Yuday
スクリプト内でタイムアウト*をしたいのですか、それともタイムアウトで実行しますか? (そして、私を 'サー'と呼んではいけない。) – Biffen