你知道如何自動保存 Spring Boot 應用進程號嗎

1. 前言

歡迎閱讀 Spring Boot 2 實戰 系列文章PID 對於系統運維來講並不陌生,可是對於一些開發者特別是新手仍是要簡單介紹一下的。它是 Process ID 的簡稱,是系統分配給一個進程的惟一標識符,是各進程的身份標識符,程序一運行系統就會自動分配給進程一個獨一無二的 PID。進程終止後,PID 被系統回收,可能會被繼續給新運行的程序。俗稱 進程號PID 是咱們進行系統進程管理的重要參數,是重要的運維標識。例如咱們經常使用的 kill -9 <pid>html

2. Spring Boot 應用的進程

jpsJava 自帶的查看 Java 進程的命令,經過這個命令能夠查看當前系統全部運行中的 Java 進程、Java包名、jar 包名及 JVM 參數等。詳細請參考相關 官方文檔。一般咱們會用 jps 來查 Java 應用的進程號。 Spring Boot 應用 做爲 Java 應用啓動後天然有一個 PID 進程號。一般咱們在啓動後會在 log 中看到它:java

.   ____          _            __ _ _
  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
 ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
   '  |____| .__|_| |_|_| |_\__, | / / / /
  =========|_|==============|___/=/_/_/_/
  :: 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 應用。spring

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:mybatis

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 來定製:oracle

 spring:
 pid:
# 將 PID 寫入 /var/run 路徑下的 myApp.pid 文件中
 file: /var/run/myApp.pid
複製代碼

從新啓動,會在 /var/run 下找到 myApp.pidapp

4. 總結

今天咱們對如何持久化 Spring Boot PID 進行了講解。經過編程式的配置,你能夠將 Spring Boot 應用的 PID 持久化到文件中,而且你能夠根據需求定製 PID 的存儲文件。今天就到這裏,若是以爲不錯,請點個贊和轉發支持一下吧。運維

關注公衆號:Felordcn獲取更多資訊spring-boot

我的博客:https://felord.cnspa

相關文章
相關標籤/搜索