如何从命令行获取运行中SpringBoot应用的激活配置文件
获取运行中SpringBoot应用的激活配置文件方法
方法一:通过jcmd调用SpringBoot MBean
- 先获取目标应用的进程ID(PID),可以用
jps或jcmd命令列出所有Java进程:jps - 执行jcmd命令调用SpringBoot内置的Admin MBean获取激活配置文件:
执行后会直接返回当前激活的配置文件名称(比如jcmd <PID> com.sun.management.MBeanServerInvocationHandler invoke org.springframework.boot:type=Admin,name=SpringApplication getProperty spring.profiles.activeprod,dev)。
方法二:通过jinfo查看系统属性
如果应用启动时通过-Dspring.profiles.active=xxx指定了配置文件,或者SpringBoot自动将激活配置文件写入了系统属性,可以用jinfo查询:
jinfo -sysprops <PID> | grep spring.profiles.active
输出会类似spring.profiles.active=prod。
方法三:通过Spring Boot Actuator端点(需提前开启)
如果应用已经启用了Spring Boot Actuator的/env端点,直接用curl请求即可:
curl http://<应用地址>:<端口>/actuator/env/spring.profiles.active
注意:需要确保Actuator的访问权限配置正确,比如允许未认证访问(生产环境不建议),或者携带认证信息。
补充:关于jcmd的使用误区
你之前用jcmd没找到相关属性,可能是没用到SpringBoot专属的MBean调用命令。默认的jcmd命令(比如jcmd <PID> VM.system_properties)只会输出JVM层面的系统属性,如果激活配置文件不是通过-D参数传入的,可能不会在这里显示,这时候就需要用上面的MBean调用方法。
内容的提问来源于stack exchange,提问作者WesAtWork
相关产品推荐
相关产品推荐

