Skrypt Bash, który wykonuje polecenie tylko wtedy, gdy port jest wolny


2

Cześć Mam skrypt bash, który wymaga warunkowego wykonania kilku wierszy kodu w zależności od tego, czy port 80 jest już w użyciu:

sudo git fetch origin;
sudo git checkout master;
sudo git pull;

--- jeśli port 80 jest otwarty

echo Starting Meteor;
export LC_ALL=C;
export ROOT_URL=$ROOT_URL;
sudo meteor --port 80;

--- jeszcze

echo Meteor already running;

Zatem jako wisienka na szczycie, ponieważ Meteor jest procesem długotrwałym, jak mogę uruchomić go w tle i wyjść ze skryptu? (Próbowałem nohup, ale nie mam pojęcia, jaka jest najlepsza praktyka?)

Dzięki wielkie


Czy masz na myśli połączenie z portem 80 lub czy komputer już nasłuchuje na porcie 80?
Daniel Chateau

Odpowiedzi:


4

Możesz użyć:

netstat -ln | grep ": 80"

Jeśli kod powrotu ($?) Wynosi 0, to coś jest na porcie: 80, w przeciwnym razie nie. Na przykład:

netstat -ln | grep ":80 " 2>&1 > /dev/null 
if [ $? -eq 1 ]; then   
     ... your code here 
fi

+1, ale będziesz chciał grep ':80\>', żebyś nie pasował na przykład do „: 8080”
glenn jackman

A druga część? Jak uzyskać „Twój kod tutaj”, aby działał w tle? po prostu „Twój kod tutaj i”?
Alasdair P

gleen: Po 80 („: 80”) wstawiłem spację, aby nie pasować do 80xx, próbowałem i wydawało się, że działa :)
fede.evol

Alasdair: tak, po prostu umieść &. Jeśli terminal może zostać zamknięty (to znaczy uruchamiasz go ręcznie w powłoce, a następnie zamykasz), to nic może się nie przydać, ponieważ utrzyma proces również w tym przypadku.
fede.evol
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.