通过 shell 脚本一键运行实现 Spring Boot 服务的重启和日志的屏幕显示

本文介绍了如何编写一个shell脚本,该脚本首先查找并终止Spring Boot服务的进程,然后后台启动服务,并通过tail命令实时显示日志内容。脚本中使用了nohup命令确保服务在后台稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

脚本说明

脚本是通过运行测试的,实现的功能:

  • 先根据启动时的 jar 文件名搜索服务进程 ID,根据进程 ID 杀死对应服务;
  • 通过 nohup 启动 jar,使之后台运行;
  • 等待 jar 服务的运行日志文件生成,然后通过 tail 命令及时动态显示日志内容

脚本内容

#! /bin/bash

# 默认 profile
my_profile="pro"
# pring Boot 服务的 jar 文件名
project_name="jzy-dinner-fast-1.1.0.jar";
# 日志文件路径,根据需要修改
log_file_path="./logs/jzy-dinner.log"

# 如果存在命令行第一个参数,替换默认 profile
if [ -n "$1" ]; then
  my_profile="$1"
fi

echo "  >>> begining lauch project $project_name ....."
# 搜索已经启动的 Spring Boot 服务进程 ID
pid=$(jps -l|grep $project_name|cut -d ' ' -f1)
echo "  >>> source project process id : $pid"

if [ $pid ]
 then
   echo "  >>> kill source project ......"
   # 杀掉 已存在服务进程
   kill -9  $pid
   sleep 3
   echo "  >>> restart project ......"
 else
  echo "  >>> start project......"
fi

# 新启动并后台运行 Spring Boot 服务
nohup java -Xms1g -Xmx1g -Xss1024K -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -server -jar -Dfile.encoding=utf-8 ./$project_name --spring.profiles.active=$my_profile >/dev/null 2>&1 &

# 循环等待日志文件生成,同时通过动态转动字符表示等待
spin='-\|/'
i=0
until [ -f $log_file_path  ]
do
i=$(( (i+1) %4 ))
printf "\r[${spin:$i:1}]"
sleep 0.1
done
printf "\n\n >>> tail -f "$log_file_path"\n\n"

# 显示日志内容
tail -5f $log_file_path

※ 关于 >/dev/null 2>&1,请参考 nohup 中关于 >/dev/null 2>&1 的相关说明

【完】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值