你知道如何自动保存 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获取更多资讯
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
“伪造”Windows 10 更新安装 “ Cyborg” 勒索软件
最新的Windows 2019年11月10日更新已经开始推出供用户使用。与此同时,一些居心不良的行为也开始显现。 如果用户收到一封声称来自微软的电子邮件,并要求安装所谓的关键更新的话,请立即将其删除。据悉,SpiderLabs的安全研究人员发现了一个新的勒索软件活动。在该活动中,有问题的假Windows Update将作为附件发送到垃圾邮件中。 研究人员指出,此类电子邮件通常包含主题行“ Critical Microsoft Windows Update!”或“立即安装最新的Microsoft Windows Update!”。 打开电子邮件后,用户只能找到正文的一行以及伪造的更新文件。尽管它是一个可执行文件,但其扩展名为.jpg。 现在,附加的可执行文件还从一个现已淘汰的GitHub帐户(名为misterbtc2020)下载了另一个名为bitcoingenerator.exe的可执行文件。第二个可执行文件包含Cyborg Ransomware的有效负载,该负载进一步加密了受害者计算机上的文件,并在桌面上留下了赎金记录。 为了解锁系统文件,电子人勒索软件要求受害者向文本文件中提到的钱包...
- 下一篇
关于“你喜欢的工作总是996,你该不该说886”我还是有话想说
这是奇葩说的一道辩题,本来当时听听聊聊也就过去了,直到今天又看到了过劳死的新闻,我觉得还是有些话想说... 薛兆丰,李诞和罗振宇一致支持996,因为我们缺乏“议价权”,这也许就是企业肆无忌惮的利器,不是所有的工作对于打工的人都有绝对的议价权的,毕竟不是所有的工作都是技术型工种,能让你“东方不亮西方亮”,仿佛说的很有道理;“你父母关心你得身体,你父母的身体谁来关心?不还是你?”仿佛也没什么毛病。 但当这一切至于生死的高度是不是就没意义了?我通过996增加了我的价值,可价值终究会在“过劳死”后烟消云散,那么议价权还有什么意义?留下的只是个破碎的家庭,除了父母可能还有妻儿,他们的身体谁来关心?不是所有的996都会“过劳死”,但问题是我们为什么要拿性命来这场豪赌,为的却只是在简历里留下一笔,甚至算不上浓墨重彩的一笔。 我们是否选择886的观点不是真的让你遇到困难,觉得辛苦就退缩,就886,而是给予更多人选择的空间,在实在难熬的日子里,想想家庭责任,想想妻儿老小,拼命为他们是没错的,但这的拼了命,这一切还有意么?“只有工作中才能体现生命的意义”,可除了生命的意义,我们还有为人父母,为人子女的义务...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用