仅当端口空闲时才执行命令的 Bash 脚本

Ala*_*r P 4 bash ubuntu conditional-statements

嗨,我有一个 bash 脚本,它需要根据端口 80 是否已在使用来有条件地执行几行代码:

sudo git fetch origin;
sudo git checkout master;
sudo git pull;
Run Code Online (Sandbox Code Playgroud)

--- 如果端口 80 打开

echo Starting Meteor;
export LC_ALL=C;
export ROOT_URL=$ROOT_URL;
sudo meteor --port 80;
Run Code Online (Sandbox Code Playgroud)

- - 别的

echo Meteor already running;
Run Code Online (Sandbox Code Playgroud)

然后作为顶部的樱桃,因为 Meteor 是一个长时间运行的进程,我如何让它在后台运行并退出脚本?(我试过 nohup 和 &,但我不知道最佳做法是什么?)

非常感谢

小智 7

你可以使用:

netstat -ln | grep ":80 "

如果返回代码 ($?) 为 0,则端口 :80 上有内容,否则不会。例如:

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