你知道如何自动保存 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 获取更多资讯
上一篇: 给axios的请求拦截器中配置token
下一篇: [PHP] PHP 7.4.5的错误修复