function port_already_in_use()
{
# 检查端口是否被占用, 0 表示已占用,1表示未占用
port=$1
if command -v lsof >/dev/null 2>&1; then
pid=$(lsof -i :$port | grep LISTEN | awk '{print $2}')
if [ -z "$pid" ]; then
return 1
else
echo "端口 $port 已被占用,进程ID为:$pid"
return 0
fi
else
if command -v netstat >/dev/null 2>&1; then
pid=$(netstat -natpl | grep :$port | awk '{print $7}' | cut -d '/' -f 1)
if [ -z "$pid" ]; then
return 1
else
echo "端口 $port 已被占用,进程ID为:$pid"
return 0
fi
else
echo "lsof和netstat命令均不存在,无法检测 $port 是否已被占用"
return 1
fi
fi
}
if port_already_in_use 6379; then
echo "6379端口已被占用"
fi
function docker_already_installed()
{
if command -v docker &> /dev/null; then
return 0
else
return 1
fi
}
function docker_is_running()
{
# 返回0 表示成功,非0失败
if [ "$(systemctl is-active docker)" = "active" ]; then
return 0
else
return 1
fi
}
if docker_already_installed; then
echo "Docker already installed"
else
tar zxf docker*.tgz
cp docker.service /usr/lib/systemd/system/docker.service
cp -p docker/* /usr/bin
systemctl daemon-reload
fi
if ! docker_is_running; then
echo "start docker..."
systemctl start docker
sleep 1
if ! docker_is_running; then
echo "start docker failed!"
fi
fi
shell脚本检查端口是否被占用,服务是否安装、启动
于 2024-03-28 19:50:15 首次发布
文章介绍了两个函数:检查端口6379是否被使用(port_already_in_use)和检查Docker是否已安装并运行(docker_already_installed和docker_is_running)。通过`lsof`和`netstat`命令检测端口占用,如果Docker未安装则进行安装并启动。
摘要由CSDN通过智能技术生成