Script de bash que executa o comando somente se a porta estiver livre

2

Oi eu tenho um script bash que precisa de uma execução condicional de algumas linhas de código com base em se a porta 80 já está em uso:

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

--- se a porta 80 abrir

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

--- else

echo Meteor already running;

Então, como uma cereja no topo, já que o Meteor é um processo de longa duração, como faço para que ele seja executado em segundo plano e saia do script? (Eu tentei nohup, & amp ;, mas não tenho idéia de qual é a melhor prática?)

Muito obrigado

    
por Alasdair P 19.03.2014 / 16:15

1 resposta

3

Você pode usar:

netstat -ln | grep ":80 "

Se o código de retorno ($?) for 0, então algo está na porta: 80, caso contrário não. Então, por exemplo:

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