尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Springboot启动时记录进程ID

Springboot启动时记录进程ID
📅 发布时间:2026/6/22 2:07:49

Springboot启动时记录进程ID

1. 背景说明

springboot项目打包成可执行jar包以后,需要通过java -jar xxx.jar启动项目.启动方式对非技术人员不太友好.所以需要项目构建时,生成一个start.bat和stop.bat的脚本.关闭采用taskkill -F -PID命令或者 kill -9 需要知道启动的进程ID.

2. 代码实现

  • springboot启动类,添加 ApplicationPidFileWriter listeners 实现启动时记录PID
// 小游戏 地心侠士SpringApplication appliction = new SpringApplication(AppsApplication.class);appliction.addListeners(new ApplicationPidFileWriter());appliction.run(args);

这样项目运行后,会在根目生成一个application.pid文件,记录启动的进程ID.

  • 实现关闭代码
// 小游戏  地心侠士
private static void shutdown() {
File file = new File("application.pid");
try {FileReader fileReader = new FileReader(file);String pid = null;try (BufferedReader br = new BufferedReader(fileReader)) {pid = br.readLine();}if (StringUtils.isNotBlank(pid)) {if (System.getProperty("os.name").toLowerCase().indexOf("windows") > -1) {Runtime.getRuntime().exec("taskkill -F -PID " + pid);} else {Runtime.getRuntime().exec("kill -9 " + pid);}}
} catch (IOException e) {if (e instanceof FileNotFoundException) {System.err.println("未找到文件:" + file.getAbsolutePath());}System.out.println("读取文件异常");
}
}
  • 启动类判断是关闭还是启动
public static void main(String[] args) throws IOException, ClassNotFoundException {for (String arg : args) {// 如果执行jar包时,参数为shutdown,则关闭项目if ("shutdown".equals(arg)) {			shutdown();System.exit(0);}}// TOOD 小游戏 地心侠士 
}

3. 构建配置

使用 maven-assembly-plugin 插件动态生成启动脚本,在fileSets指定文件夹路径,在package时,会自动替换其中的Maven变量,插件配置如下

<build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><appendAssemblyId>false</appendAssemblyId><descriptors><descriptor>./package.xml</descriptor></descriptors></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions>
</plugin></plugins></build>

package.xml 配置中,针对脚本处理配置如下,脚本存放在 /src/scripts 目录下

<fileSets><fileSet><directory>src/scripts</directory><outputDirectory>/</outputDirectory><filtered>true</filtered>
</fileSet></fileSets>

4. 生成启动脚本

启动脚本模板,目录存放 /src/scripts/startup.bat, 使用maven打包变量可以生成具体启动脚本

@echo off
title SpringBoot-%date%-%time%-%cd%
java -jar -Dloader.path=resources,lib,plugin ${project.artifactId}-${project.version}.jar

5. 生成关闭脚本

关闭脚本模板,目录存放 /src/scripts/shutdown.bat

java -jar -Dloader.path=resources,lib ${project.artifactId}-${project.version}.jar shutdown

6. 总结

开发项目,尽量减少操作步骤.能代码化的脚本,一定代码化,减少人为出错的可能性.

原文地址:https://mp.weixin.qq.com/s/ZPyl-j9QgP-Pc6H-9dxFPQ

转载请注明来源
作者:杨瀚博
QQ:464884492

相关新闻

  • 详细介绍:【Linux】07.Ubuntu开发环境部署
  • 2025 最新电缆品牌权威推荐:耐火 / 阻燃 / 智能 / 光伏等全品类优质厂商榜单,附国际认证测评
  • 2025 最新电缆制造厂家推荐!电缆品牌权威榜单发布,耐火 / 智能 / 特种电缆优选企业全解析

最新新闻

  • 2026上海松江区本地装修公司推荐 街坊邻居实测好品牌 - 资讯焦点
  • XHS-Downloader:重新定义小红书内容管理的新范式
  • Ubuntu 16.04下MySQL 5.6+Galera高可用集群实战指南
  • CentOS SSH密钥登录实战:ed25519配置与VS Code免密连接
  • UAF漏洞原理与利用实战:从悬空指针到Root权限获取
  • B站视频转文字终极指南:用Bili2Text轻松提取视频内容

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号