判断端口监听,链接状态返回、重启服务器。
#!/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} :控制额外输出。