#! /bin/bash

function checktcpcode() {
    listen_num=$(ss -lnpt|grep "$1"|wc -l) #$1获取参数中的检查端口
    # echo $listen_num
    if [ $listen_num -eq 0 ];then # 如果不存在监听则返回0 否则返回1
        return 0
    fi
        return 1
}


function check(){
    while true
    do
        checktcpcode xxx
        if [[ $? -eq 0 ]];then  # 如果返回值是0,则重启
            echo "restart xxx"
            docker restart xxx
        fi

        sleep 1m
    done
}

check

后台执行

nohup ./check_status.sh > check_status.log &

如果是http服务,尽量选择http 检查,有时tcp在监听,但是http已不提供服务