一个通用的Spring Boot启停脚本
一个通用的Spring Boot启停脚本#!/bin/bash app_namestudy-0.0.1-SNAPSHOT.jar log_file${app_name%.*}.log log_file_back${log_file%.*}_$(date %Y%m%d_%H%M%S).log pidps -ef | grep $app_name | grep -v grep | awk {print $2} | head -n 1 # 计数器 count0 # 停止进程等待时间秒 kill_wait_seconds45 # 是否成功停止进程的标志 kill_successnull # 启动等待时间秒 start_wait_seconds45 if [ -n ${pid} ]; then kill_successtrue fi # 结束旧进程。 # 使用kill -15结束Spring Boot进程时优雅停机默认情况下若服务超过30s还未结束则会被强制停机效果类似于kill -9) # 若要Spring Boot强制优雅停机可在配置文件配置server.shutdownGRACEFUL还可以配置spring.lifecycle.timeout-per-shutdown-phase30s指定超时时长 while [ -n ${pid} ] do if [ $count -eq 0 ]; then echo start kill ***${app_name}*** by pid ${pid} kill -15 $pid echo -n killing fi if [ $count -ge $kill_wait_seconds ]; then echo echo Kill fail. Please check detail or use \kill -9 ${pid}\ kill_successfalse break fi sleep 1 echo -n . pidps -ef | grep $app_name | grep -v grep | awk {print $2} | head -n 1 count$((count 1)) done if [ $kill_success true ]; then echo echo ***${app_name}*** kill successed! fi if [ $kill_success ! false ]; then if [ -f $log_file ]; then echo Backing up existing log: ${log_file} - ${log_file_back} mv $log_file $log_file_back fi # 核心启动命令在此处添加启动参数等 nohup java -jar $app_name ${log_file} 21 # 启动命令执行成功开始监控日志文件 echo -n starting count0 while [ $count -lt $start_wait_seconds ] do sleep 1 echo -n . if grep -q Started .* in .* seconds ${log_file}; then break fi count$((count 1)) done echo if grep -q Started .* in .* seconds ${log_file}; then echo ***${app_name}*** start successed! else echo ***${app_name}*** startup time out. No success flag found in ${log_file}. fi fi