检测端口和URL状态码判断启动服务

判断端口监听,链接状态返回、重启服务器。

#!/bin/bash

source /etc/profile
# 加载环境变量
port=`netstat -ntlp | grep -c ":8080"`
# tomcat 8080 端口监听

if [ "$port" = "0" ]; then
# 如果 8080 端口没有进程在监听
    
    cd /opt/tomcat/bin && sh startup.sh &
    # 则启动 tomcat 的进程
    
    echo $(date "+%F %H:%M:%S") - port is down, restart tomcat >> /opt/logs/port.log
    # 将日志写入日志文件

else   
    code=`curl -I -m 10 -o /dev/null -s -w %{http_code} http://127.0.0.1:8080/`
    # 测试 http://127.0.0.1:8080 返回码
    
    if [ "$code" != "200" ]; then
    # 如果返回的状态码不是 200
        
        ps aux|grep "tomcat" |grep -v grep|awk '{print $2}'|xargs kill -9
        # 则先 kill 掉所有 tomcat 的进程 (或者 shutup.sh )
        cd /opt/tomcat/bin && sh startup.sh &
        # 再启动 tomcat 的进程
        echo $(date "+%F %H:%M:%S") - kill service and restart != 200 >> /opt/logs/port.log
        # 将日志写入日志文件
    fi
fi

URL 返回状态码

curl -I -m 10 -o /dev/null -s -w %{http_code} http://127.0.0.1:8080
-I :只显示请求头信息;
-m 10 :设置最大传输时间,单位是秒;
-o /dev/null :屏蔽原有输出信息;
-s :silent 模式,不输出任何东西;
-w %{http_code} :控制额外输出。
原文地址:https://www.cnblogs.com/sharesdk/p/12583650.html