supervisor安装以及保活java的jar包文件(重启机器也生效)

一、supervisor安装

本文系统为centos7
执行以下命令

yum install -y supervisor
#(如果用的是阿里云的CentOS7会提示找不到supervisor,则yum install epel-release先安装EPEL源)
#如果这里报错需要python-setuptools依赖包无法安装的话,说明yum源有问题,执行下面命令再次安装
#curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
systemctl enable supervisord#设置开机自启动

安装成功后会在/etc目录下生成supervisord.d的文件夹(用于存放要保活的项目的配置文件)和supervisord.conf(supervisor的配置)的配置文件,继续执行以下命令

vi /etc/supervisord.conf

将最后一行配置修改成如下配图,本文将配置文件放到supervisord.d文件夹下,保存文件,重启supervisor,使用以下命令更新配置

supervisorctl update

supervisor安装以及保活java的jar包文件(重启机器也生效)_第1张图片

二、配置启动jar包脚本

将要启动的jar包放/home目录下(其它也可,脚本中根据自己具体目录修改相应路径),在/home目录下新建启动java程序脚本文件start.sh

touch /home/start.sh
vi /home/start.sh

内容如下:

#!/bin/bash

#打印时间
current_time=`date +"%Y-%m-%d %H:%M:%S"`
echo $current_time
echo "****************************"
echo "***  启动应用软件开始   ****"
echo "****************************"

echo "传的参数为: $1"

#传参序号
index=''
if  [ ! -n "$1" ]
then
    echo "参数为空"
        exit 1
else
    echo "第1个参数为:$1";
        index=$1
fi

#配置jar包启动参数
JAVA_OPTIONS_INITIAL=-Xms128M
JAVA_OPTIONS_MAX=-Xmx256M
JAVA_OPTIONS_MEMORY=-XX:MetaspaceSize=128m' '-XX:MaxMetaspaceSize=128m' '-Xms512m' '-Xmx512m' '-Xmn256m' '-Xss256k' '-XX:SurvivorRatio=8' '-XX:+UseConcMarkSweepGC' '-XX:+PrintGCDetails

cd "/usr/local/tiansu/"

#检查进程是否已经存在
function check_if_process_is_running() {
  echo " progress name: $1"
  PID=$(ps aux | grep $1 | grep -v grep | awk '{print $2}' )
  count=`ps -ef | grep $1 | grep -v "grep" | wc -l`
  echo "check_if_process_is_running count = $count" >> /etc/supervisord.d/log/start.log
  if [ 0 == $count ];then
    return 1
  fi
  return 0
}



# 安装对应服务,根据启动命令从java开始修改,勿删除exec 
case $index in
    jar1)
        if  check_if_process_is_running jar1.jar
        then
          echo -e "进程已经存在"
          exit 0
        else
         echo "*启动jar1"
         exec java -jar $JAVA_OPTIONS_INITIAL $JAVA_OPTIONS_MAX /home/jar1.jar >> /dev/null  2>&1
         echo "$current_time*jar1启动成功"
        fi
        ;;
    jar2)
        if  check_if_process_is_running jar2.jar
        then
          echo -e "进程已经存在"
          exit 0
        else
         echo "*启动jar2"
         exec java -jar  $JAVA_OPTIONS_MEMORY /home/jar2.jar  >> /dev/null 2>&1
         echo "$current_time*jar2启动成功"
        fi
        ;;
     *)
        echo "*传参无效,无法启动"
esac

echo "****************************"
echo "***  启动应用软件完成   ****"
echo "****************************"

三、配置supervisor保活配置文件

执行命令,新建jar1的配置文件(jar2同理)

touch /etc/supervisord.d/jar1.conf
vi /etc/supervisord.d/jar1.conf

jar1.conf(如果有多个jar包,配置多个不同conf文件即可,只写里面比较重要的地方,supervisor的不重要配置详情暂不解释,可以去翻看supervisor详细资料)

[program:jar1]
directory = /home/ ; #脚本路径
command = sh /home/start.sh jar1  ; #启动脚本命令,传参为jar1,根据start.sh中配置的传参,启动jar2则传jar2
autostart = true     ;
startsecs = 5        ;
autorestart = true  ;   #失败后是否自动重启
startretries = 3     ;  #失败后重启次数
user = root          ;
redirect_stderr = true  ; 
stdout_logfile_maxbytes = 20MB  ; 
stdout_logfile_backups = 20     ; 
; stdout 
stdout_logfile = /etc/supervisord.d/log/jar1.log  ; #日志打印文件
stopasgroup=true  ;
killasgroup=true  ;
[supervisord]

配置好以后按Esc,按:输入wq!按回车键保存文件(这个应该都会)
到这一步supervisor安装好了,并且会读取supervisord.d下面的配置文件,脚本和jar包也准备就绪,在安装后supervisor已启动,执行以下命令重新加载supervisor的配置

supervisorctl reload
supervisorctl status

一切没问题应该出现程序运行状态,如果有问题执行cat /etc/supervisord.d/log/jar1.log查看日志文件
在这里插入图片描述
注意:使用之前要用jps命令看看jar1有没有启动,如果启动先杀掉进程,否则脚本会判断jar包已经存在并且端口已占用然后不断重启,状态为BACKOFF或者FAILED

另外添加几个supervisor常用命令:

查看所有任务状态: supervisorctl status
查看单个任务状态: supervisorctl status 服务名
启动任务:supervisorctl start 服务名
停止任务:supervisorctl stop 服务名
重启任务:supervisorctl restart 服务名
supervisorctl update :配置文件修改后可以使用该命令加载新的配置
supervisorctl reload: 重新启动配置中的所有程序

你可能感兴趣的:(运维,linux,运维)