linux服务器中boot服务自启动监测

一、制作服务启动脚本

start.sh

#!/bin/bash
echo "restart web-server,please wait for a moment."
app_name=/home/app/demo.jar

usage(){
 echo "usage: start.sh [start|stop|restart|status]"
 exit 1
}

is_exist(){
  pid=`ps -ef|grep $app_name|grep -v grep|awk '{print $2}'`
  echo "pid=${pid}"
  if [ -z "${pid}" ]
  then
     return 0
  else
     return 1
  fi
}

status(){
  is_exist
  if [ $? -eq 1 ]
  then
     echo "${app_name} is already running. pid=${pid}"
  else
     echo "${app_name} is not running"
  fi
}


start(){
 is_exist
 if [ $? -eq 1 ]
 then
    echo "${app_name} is already running. pid=${pid}"
 else
    echo "start ${app_name}..."
    /home/java/bin/java -Xmx512M -Xms512M -Xmn300M -XX:MaxMetaspaceSize=200M -XX:MetaspaceSize=200M -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses -XX:+CMSClassUnloadingEnabled -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -Xdebug -Xrunjdwp:transport=dt_socket,address=5044,suspend=n,server=y -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=dev -jar ${app_name}  > /dev/null 2>&1 &
 fi
}

stop(){
 is_exist
 if [ $? -eq 1 ]; then
   kill -9 $pid
 else
   echo "${app_name} is not running."
 fi
}

restart(){
 stop
 sleep 5
 start
}

case "$1" in
"start")
  start
  ;;
"stop")
  stop
  ;;
"restart")
  restart
  ;;
"status")
  status
  ;;
*)
  usage
  ;;
esac

用法:
启动服务:./start.sh start
关闭服务:./start.sh stop
重启服务:./start.sh restart
检查服务状态:./start.sh status

二、服务自检脚本

serverCheck.sh
1.该服务会每隔10分钟检查服务状态,发现服务done机,会自动调用启动脚本 ./start.sh start启动服务
2.initserver函数的入参为springboot jar名称

#!/bin/bash
initserver(){
  local app_name=$1
  local pid=`ps -ef|grep $app_name|grep -v grep|awk '{print $2}'`
  if [ -z "${pid}" ]
  then
    echo `date +%Y-%m-%d` `date +%H:%M:%S` "start server ${app_name} ..." >> shell.log
    /home/app/${app_name}/start.sh start
  else
    echo `date +%Y-%m-%d` `date +%H:%M:%S` "${app_name}:${pid} has been started." >> shell.log
  fi
}

while true
do
  initserver  demo
  initserver  demo

  sleep 600

done

三、添加linux服务器,启动初始化自检脚本

  1. cd /etc/init.d/ 目录新建webautostart启动脚本文件
vi /etc/init.d/webautostart

webautostart脚本内容

#!/bin/bash
# chkconfig: 3 88 88
/home/app/serverCheck.sh > /dev/null 2>/dev/null

设置执行权限

chmod +x /etc/init.d/webautostart

2.执行命令添加服务到系统自启动列表,并检查是否成功
1)添加服务

 chkconfig --add webautostart

2)检查服务是否添加成功

chkconfig --list
image.png

四、重启linux服务器检查服务是否自启动

reboot

你可能感兴趣的:(linux服务器中boot服务自启动监测)