shell脚本检查端口是否被占用,服务是否安装、启动

文章介绍了两个函数:检查端口6379是否被使用(port_already_in_use)和检查Docker是否已安装并运行(docker_already_installed和docker_is_running)。通过`lsof`和`netstat`命令检测端口占用,如果Docker未安装则进行安装并启动。
摘要由CSDN通过智能技术生成
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值