查看SpringBoot应用的进程号

背景

Springboot应用启动后,需要记录下它的进程id。以便通过PID实现监控和停止等运维工作。

步骤

方案一

创建一个ApplicationPid类的对象(推荐方案):

1
2
3
4
5
6
7
8
9
10
11
12
13
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.system.ApplicationPid;

@SpringBootApplication
public class ServerApplication
{

public static void main(String[] args)
{
System.out.println(new ApplicationPid());
}

}

pid成功在控制台输出:

image-20210906155557468

方案二

在main方法中,添加一个SpringBoot应用的监听器:

1
2
3
4
5
6
public static void main(String[] args)
{
SpringApplication app = new SpringApplication(ServerApplication.class);
app.addListeners(new ApplicationPidFileWriter());
app.run(args);
}

启动后会在项目的根目录下生成一个application.pid文件

image-20210906153021291

文件中记录的就是进程PID:

image-20210906153132406

验证进程ID(这个进程正在监听TCP 8888端口):

image-20210906153221056

默认情况下,生成的pid文件在项目根目录中,如果想要指定存放的位置,可以在SpringBoot的配置文件application.yml中指定spring.file.pid,fail-on-write-error表示当无法写入pid文件的时候抛出异常:

image-20210906160835958

参考

1
2
# 中止指定ID的进和,以及创建的子进程
taskkill /F /T /pid 进程ID