你知道如何自动保存 Spring Boot 应用进程号吗

1. 前言

欢迎阅读 Spring Boot 2 实战 系列文章PID 对于系统运维来说并不陌生,但是对于一些开发者特别是新手还是要简单介绍一下的。它是 Process ID 的简称,是系统分配给一个进程的唯一标识符,是各进程的身份标识符,程序一运行系统就会自动分配给进程一个独一无二的 PID。进程终止后,PID 被系统回收,可能会被继续给新运行的程序。俗称 进程号
PID 是我们进行系统进程管理的重要参数,是重要的运维标识。例如我们常用的 kill -9 <pid>

2. Spring Boot 应用的进程

jpsJava 自带的查看 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 的存储文件。今天就到这里,如果觉得不错,请点个赞和转发支持一下吧。

关注公众号:码农小胖哥,获取更多资讯

个人博客:https://felord.cn

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容