你知道如何自动保存 Spring Boot 应用进程号吗
1. 前言
欢迎阅读 Spring Boot 2 实战 系列文章。 PID
对于系统运维来说并不陌生,但是对于一些开发者特别是新手还是要简单介绍一下的。它是 Process ID 的简称,是系统分配给一个进程的唯一标识符,是各进程的身份标识符,程序一运行系统就会自动分配给进程一个独一无二的 PID
。进程终止后,PID
被系统回收,可能会被继续给新运行的程序。俗称 进程号
。
PID
是我们进行系统进程管理的重要参数,是重要的运维标识。例如我们常用的 kill -9 <pid>
。
2. Spring Boot 应用的进程
jps
是 Java 自带的查看 Java 进程的命令,通过这个命令可以查看当前系统所有运行中的 Java 进程、Java包名、jar 包名及 JVM 参数等。详细请参考相关 官方文档。通常我们会用 jps
来查 Java 应用的进程号。
Spring Boot 应用 作为 Java 应用启动后自然有一个 PID
进程号。通常我们在启动后会在 log 中看到它:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.2.0.RELEASE)
2019-11-20 14:28:00.925 INFO 7828 --- [ main] c.f.s.s.SecurityLearningApplication : Starting SecurityLearningApplication on DESKTOP-L0IOI2S with PID 7828
当使用多个Spring Boot应用程序时,很难识别Spring Boot应用程序PID,持久化后的 PID
更加方便我们来管理 Spring Boot 应用。
3. Spring Boot 应用 PID 写入文件
Spring Boot 提供了在应用程序启动时将应用程序PID写入文件的方法,具体的功能由 ApplicationPidFileWriter
完成 。大致逻辑为:在应用启动时监听启动事件,将 PID
写入指定的文件,默认为 application.pid
;默认路径为当前路径。如果写入文件失败,将会将 PID
值 写入系统环境变量属性 PID_FAIL_ON_WRITE_ERROR
(不区分大小写),或者写入 Spring 环境变量属性 spring.pid.fail-on-write-error
。
3.1 配置 Spring Boot PID 持久化功能
默认情况下 ApplicationPidFileWriter
并没有自动配置,需要我们自行配置。我们可以在 Spring Boot 入口类中按照下面的模板进行配置注册监听器 ApplicationPidFileWriter
:
package cn.felord.spring.security;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.ApplicationPidFileWriter;
import org.springframework.cache.annotation.EnableCaching;
/**
* @author Felordcn
*/
@SpringBootApplication
public class SecurityLearningApplication {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(SecurityLearningApplication.class);
springApplication.addListeners(new ApplicationPidFileWriter());
springApplication.run(args);
}
}
做了上述配置后,启动就会生成 application.pid
文件,里面就会有 PID
。有时候可能你要定制文件的名称和路径。你可以通过 Spring Boot 的配置属性 spring.pid.file
来定制:
spring:
pid:
# 将 PID 写入 /var/run 路径下的 myApp.pid 文件中
file: /var/run/myApp.pid
重新启动,会在 /var/run
下找到 myApp.pid
。
4. 总结
今天我们对如何持久化 Spring Boot PID
进行了讲解。通过编程式的配置,你可以将 Spring Boot 应用的 PID
持久化到文件中,并且你可以根据需求定制 PID
的存储文件。今天就到这里,如果觉得不错,请点个赞和转发支持一下吧。
关注公众号:Felordcn 获取更多资讯
相关文章
- Spring Boot devtool的使用
- 使用 Spring Boot Admin 监控应用状态
- 浅谈Shiro框架在Spring Boot中的认证应用
- 什么是spring boot?为什么要用?
- Docker环境下Spring Boot应用内存飙升分析与解决
- 《深入实践Spring Boot》一2.4 使用Neo4j
- spring boot 集成mongoDB操作
- Spring Boot整合tk.Mapper/通用Mapper
- 部署 Spring Boot 应用到 K8S 教程
- 注意:Spring Boot 2.7开始spring.factories不推荐使用了,接下来这么玩...
- 《精通Spring MVC 4》——2.9 使用WebJars实现质感设计
- 基于Spring Boot + MyBatis + MySQL + Redis + FreeMarker而设计开发的问答网站【100010424】
- 基于Java(Spring Boot)+MySQL实现商品销售平台【100010126】
- Spring Boot 2.2.0,性能提升+支持Java13
- 如何在Spring Boot应用启动之后立刻执行一段逻辑
- Spring Boot 和 Docker 实现微服务部署
- spring boot 多模块简单示例
- Spring Boot JPA中java 8 的应用
- Spring Boot注解
- spring的对象属性相同(类型,名字)拷贝
- Spring Boot导出jar包发布
- 打造Spring Boot应用时常用到的轮子
- 让你的spring-boot应用日志随心所欲--spring boot日志深入分析
- 曹工谈Spring Boot:Spring boot中怎么进行外部化配置,一不留神摔一跤;一路debug,原来是我太年轻了
- 曹工说Spring Boot源码系列开讲了(1)-- Bean Definition到底是什么,附spring思维导图分享
- Spring Boot应用使用Validation校验入参,现有注解不满足,我是怎么暴力扩展validation注解的
- Spring Boot 推荐的基础 POM 文件
- 15 Spring Boot Shiro 验证码