故障自愈一般用到的shell

重启应用进程:

#!/bin/bash
#重启应用进程
proc_key=test
start_path=/home/weblogic/test/test/bin
start_script=startup.sh
stop_script=shutdown.sh

# 检查服务状态
check_proc_status () {
	local flag=0

    for i in $(seq 1 $TIMEOUT); do
      sleep 1; echo -n '.'
       ps -ef | grep -v grep|grep "$proc_key" || {
             flag=1
             break
       }
    done
    
    if [[ $flag == 1 ]]; then 
      echo '服务已停止.'
      return 1
    else
      echo '服务已运行.'
      return 0
    fi
}
check_proc_status_once () {
    ps -ef | grep -v grep|grep "$proc_key" 
}
	if check_proc_status_once ; then
		cd $start_path && sh $stop_script

		if [ $? == 0 ]; then 
		  echo '停止脚本执行成功.'
		else
		  echo '停止脚本执行返回值非零,请检查!'
		fi
	  
	  # 执行停服务命令后,再检查服务状态
	  echo "执行停服务脚本后,再检查服务状态: $proc_key"
	  if check_proc_status ; then
		ps aux |grep $proc_key > dead.log
		ps aux |grep $proc_key |grep -v grep|awk '{print $2}' |xargs kill -9;
		echo "进行kill 服务操作"
		sleep 2
		# kill 服务后, 再检查服务状态
		check_proc_status_once || {
		  echo "服务已停止"
		} || {
		  echo "服务已运行,kill 服务操作未成功, 请检查!"
		}
	  fi  
	else
	  echo "服务已停止."
	fi
echo "启动服务"
sleep 2
cd $start_path || exit 1
sh $start_script

进程和端口检测:

#!/bin/bash
#进程端口检测
proc_key="test"
TIMEOUT=20
port=8848

# 检查服务状态
check_proc_status () {
        echo "检查进程状态"
        local flag=0
        ps -ef | grep -v grep|grep -q $proc_key || {
        flag=1
    }

    if [[ $flag == 1 ]]; then
      echo "服务:$proc_key,服务不存在."
      exit 1
    else
      echo "服务:$proc_key,服务已运行."
      return 0
    fi
}
# 检查检查进程端口状态
check_port_status () {
        echo "检查端口状态"
        local status=1

        for i in $(seq 1 $TIMEOUT); do
                sleep 1; echo -n '.'
                ss -tunlp | grep -q ":${port}\>" && {
                  status=0
                  break
                }
        done

    #打印端口状态
	if [ ${status} -eq 0 ]; then
      echo "端口: $port, 状态:已监听"
      return 0
    else
      echo "端口: $port, 状态:未监听"
      exit 1
    fi

}
check_proc_status
check_port_status
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虫子小屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值