记录jvm进程号
日常开发中,相信大家会经常用到这么一行命令:
ps -ef | grep xxx.jar | grep -v grep | awk '{print $2}' | xargs -r kill -9
就是杀掉xxx相关的进程,然后启动,当然也还有其他的方式可以实现类似的功能,我就不列举了,另外呢,现在很多公司可能也都把项目上云了,大部分情况都不需要自己写脚本重启服务,这个命令中在kill前面的一大串其实就是获取xxx.jar这个服务的jvm进程号,然后传递给kill -9命令,那么除了这种方式,还有没有其他办法获取到jvm进程号呢,下面就我知道的分享一下,不喜勿喷
第一种,通过java代码获取,获取到之后,不管是输出到文件还是输出到控制台都可以,当然是建议输出到文件了,代码如下
public class MyJvm {public static void main(String[] args) {String jvmName = ManagementFactory.getRuntimeMXBean().getName();int pid = Integer.parseInt(jvmName.split("@")[0]);System.err.println("当前jvm进程PID: " + pid);try {java.io.FileWriter fw = new java.io.FileWriter("myjvm.pid");fw.write(pid + "");fw.flush();fw.close();} catch (java.io.IOException e) {e.printStackTrace();}}
}

第二种,就是logback日志中获取,现在大部分的javaweb项目应该基本上都是用springboot构建,springboot默认采用logback日志记录日志,里面内置了变量可以直接获取进程号,关键代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration><property name="log.pattern" value="[PID=${PID}]%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n" /><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${log.pattern}</pattern></encoder></appender><root level="info"><appender-ref ref="console" /></root>
</configuration>
@SpringBootApplication
public class LogjvmApplication {private static final org.slf4j.Logger LOGGER = org.slf4j.LoggerFactory.getLogger(LogjvmApplication.class);public static void main(String[] args) {String jvmName = ManagementFactory.getRuntimeMXBean().getName();int pid = Integer.parseInt(jvmName.split("@")[0]);LOGGER.info("当前系统进程号:" + pid);SpringApplication.run(LogjvmApplication.class, args);}}

第三种,通过MDC设置进程编号变量:
@SpringBootApplication
public class LogjvmApplication {private static final org.slf4j.Logger LOGGER = org.slf4j.LoggerFactory.getLogger(LogjvmApplication.class);public static void main(String[] args) {String jvmName = ManagementFactory.getRuntimeMXBean().getName();int pid = Integer.parseInt(jvmName.split("@")[0]);LOGGER.info("当前系统进程号:" + pid);// 将 PID 放入 MDCMDC.put("pid", pid + "");SpringApplication.run(LogjvmApplication.class, args);try {java.io.FileWriter fw = new java.io.FileWriter("logjvm_pid");fw.write(pid + "");fw.flush();fw.close();} catch (java.io.IOException e) {LOGGER.error("写入文件失败", e);}}}
<?xml version="1.0" encoding="UTF-8"?>
<configuration><property name="log.pattern" value="[PID=%X{pid}]%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n" /><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${log.pattern}</pattern></encoder></appender><root level="info"><appender-ref ref="console" /></root>
</configuration>
与第二种不同的是在logback日志中获取进程号的表达式不一样:PID=%X{pid}
相关文章:
记录jvm进程号
日常开发中,相信大家会经常用到这么一行命令: ps -ef | grep xxx.jar | grep -v grep | awk {print $2} | xargs -r kill -9 就是杀掉xxx相关的进程,然后启动,当然也还有其他的方式可以实现类似的功能,我就不列举了&…...
day19——web自动化测试(1)
【没有所谓的运气🍬,只有绝对的努力✊】 目录 1、什么是自动化 1.1 概念: 1.2 优点: 2、什么是自动化测试 2.1 自动化测试能解决什么问题? 2.1.1 优点: 2.1.2 误区: 2.2 自动化测试分类…...
go window安装protoc protoc生成protobuf文件
1. 下载: Releases protocolbuffers/protobuf GitHub 2. 解压缩: 3. 配置环境变量: 选择系统变量->Path -> 新增 解压缩后的bin路径 4. 打印版本: protoc --version 5. 安装protoc-gen-go cmd 下输入安装命令࿰…...
微信小程序中momentjs无法切换中文问题处理
微信小程序中momentj.s无法切换中文问题处理. 表现为 使用 locale(“zh-cn”)无效。 处理方法 # 1、先删除 miniprogram_npm\moment\index.js # 2、将 node_modules\moment\min\moment-with-locales.min.js 复制到 miniprogram_npm\moment下 并重命名为index.js # 3、修改mi…...
数据结构:链表
链表是一种常见的数据结构,它由一系列节点(Node)组成,每个节点包含两个部分:数据域和指针域。数据域用于存储数据元素的值,而指针域则用于指向链表中的下一个节点。这种结构使得链表能够动态地进行插入和删…...
领克Z20结合AI技术,革新自动驾驶辅助系统
眼瞅着,再有不到 5 个星期,春节就要热热闹闹地登场啦!对于在外辛苦打拼了一整年的打工人而言,回家过年可不就是这一年里心心念念、最最期盼的高光时刻嘛。这不,这几天各地的高速公路愈发熙熙攘攘起来,川流不…...
vector快慢指针+例题详解
1.快慢指针 例题 给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从…...
重温设计模式--1、组合模式
文章目录 1 、组合模式(Composite Pattern)概述2. 组合模式的结构3. C 代码示例4. C示例代码25 .应用场景 1 、组合模式(Composite Pattern)概述 定义:组合模式是一种结构型设计模式,它允许你将对象组合成…...
单片机:实现SYN6288语音播报(附带源码)
单片机实现SYN6288语音播报 SYN6288是一款广泛应用于语音合成的IC,可以通过串口与单片机(如51系列、STM32等)进行通信,实现场景化的语音播报。通过连接外部存储设备(如SD卡)存储语音文件或直接通过内部语音…...
cookie,session,token 的区别
解决什么问题?Cookie(客户端存储)问题来了 Session(会话)解决的问题问题来了 token(令牌)解决的问题问题:token是无状态的如何解决? 解决什么问题? 解决http无状态的问题,说简单点就是用户身份的验证 举个例子: 张三在银行里…...
基于OpenAI Whisper AI模型自动生成视频字幕:全面解析与实战指南
在数字化时代,视频内容已成为信息传播的重要载体。然而,为视频添加字幕却是一项繁琐且耗时的工作。幸运的是,随着人工智能技术的飞速发展,特别是OpenAI Whisper模型的推出,我们有了更加高效、智能的解决方案。 一、Op…...
物理学天空的两朵乌云——量子论与相对论
物理学天空的两朵乌云——量子论与相对论 爱因斯坦的青春与科学的辉煌起点 提到爱因斯坦,我们往往会联想到一个经典的形象——乱糟糟的头发,叼着烟斗,脸上满是岁月的皱纹。然而,这张深入人心的照片并不是他科学创造力的象征。实…...
聚类之轮廓系数
Silhouette Score(轮廓系数)是用于评估聚类质量的指标之一。它衡量了数据点与同簇内其他点的相似度以及与最近簇的相似度之间的对比。 公式 对于一个数据点 i: a(i): 数据点 i 到同簇内其他点的平均距离(簇内不相似度ÿ…...
Jenkins 构建流水线
在 Linux 系统上安装 Jenkins 服务,以及配置自动化构建项目 前置准备环境:docker、docker-compose、jdk、maven 一、环境搭建 1. Jenkins 安装 (1)拉取镜像 # 安装镜像包,默认安装最新版本 docker pull jenkins/jen…...
RTK部分模糊度固定测量流程图
部分模糊度剔除常用测量: 周跳或失锁时间优先剔除;按俯仰角剔除;按浮点模糊度协方差大小剔除模糊度;按信号强度剔除卫星;...
力扣-数据结构-2【算法学习day.73】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…...
操作系统导论读书笔记
目录 虚拟化抽象:进程抽象:进程概念 虚拟化 抽象:进程 本章讨论操作系统提供的基本的抽象—— 进程。进程的非正式定义非常简单:进程就是运行中的程序。程序本身是没有生命周期的,它只是存在磁盘上面的一些指令&…...
基于3D-Speaker进行区分说话人项目搭建过程报错记录 | 通话录音说话人区分以及语音识别 | 声纹识别以及语音识别 | pyannote-audio
0. 研究背景 在外呼系统中,我们的后台管理系统通常要对电话录音的内容进行提取和分析。那么说到分析,我们就要对录音中的两个人的对话进行分离,然后分别分析,比如分析客户是否有合作的意愿,分析客服讲的话术是否合理&…...
如何使用流式渲染技术提升用户体验
提示:记录工作中遇到的需求及解决办法 文章目录 什么是流式渲染?Node.js 实现简单流式渲染声明式 Shadow DOM,不依赖 javascript 实现react 实现流式渲染总结提示:以下是本篇文章正文内容,下面案例可供参考 什么是流式渲染? 流式渲染主要思想是将HTML文档分块(chunk)…...
【接口自动化连载】使用yaml配置文件自动生成接口case
直接上干货撸代码,有一些是通用的工具类代码,一次性封装永久使用,期待大家的关注,一起加油!!! 配置文件 根据不同的业务需求进行配置,例如Goods服务、Order服务分开配置࿰…...
未发表!25年顶级SCI算法SOO优化CNN-LSTM-Attention一键实现多步预测!多步预测全家桶更新啦!
目录 多步预测案例 多步预测教程 创新点与原理 ①创新点一:基于CNN-LSTM的多尺度特征联合提取架构 ②创新点二:融合SE通道注意力机制的自适应特征重标定策略 ③创新点三:基于SOO智能算法的超参数自适应寻优 结果展示 全家桶目录 获取…...
BUCK变换器断续模式实战:从公式推导到MATLAB仿真验证(附代码)
BUCK变换器断续模式实战:从公式推导到MATLAB仿真验证(附代码) 在电力电子领域,BUCK变换器作为最基础的降压型拓扑结构,其工作模式的理解直接影响着电源设计的可靠性。许多初学者往往对断续模式(DCM)的特性感到困惑——…...
0欧姆电阻在电子设计中的关键应用与选型指南
1. 0欧姆电阻的实质与特性在电子工程实践中,0欧姆电阻(Zero-Ohm Resistor)是一种表面贴装或插装形式的特殊电子元件。虽然标称值为零欧姆,但实际测量时会发现其存在微小的阻值——典型值在20-50毫欧之间。这个特性使其既不同于理想…...
轻量级代码编辑器Lapce从入门到精通:Rust驱动的极速开发体验
轻量级代码编辑器Lapce从入门到精通:Rust驱动的极速开发体验 【免费下载链接】lapce Lightning-fast and Powerful Code Editor written in Rust 项目地址: https://gitcode.com/GitHub_Trending/la/lapce 核心特性解析:为什么选择Rust编写的编辑…...
Linux开发必备:Makefile基础与实战模板解析
1. Linux开发中的Makefile基础在Linux环境下开发程序,与Windows平台最大的区别之一就是编译方式。Windows开发者通常习惯使用集成开发环境(IDE)提供的"一键编译"功能,而Linux开发者则需要掌握Makefile这一强大的构建工具。Makefile本质上是一个…...
PolyServo:基于中断的软件PWM多路伺服控制库
1. PolyServo 库深度解析:基于中断的多路 RC 伺服电机精确控制方案1.1 项目定位与工程价值PolyServo 是一个面向嵌入式实时控制场景设计的轻量级伺服驱动库,其核心创新在于完全摒弃对硬件 PWM 外设引脚的依赖,转而采用高精度软件定时器中断机…...
科技企业如何借助智能工具加快技术研发与市场推广?
观点作者:科易网-国家科技成果转化(厦门)示范基地现状概述:科技成果转化与市场推广的双重困境 在数智时代,技术转移与成果转化正经历深刻变革。一方面,海量数据成为创新的核心要素,但传统科技企…...
MCP协议v3.1兼容性落地难题全解析,深度解读2026主流框架适配方案与避坑清单
第一章:MCP协议v3.1核心语义演进与兼容性挑战本质MCP(Model Control Protocol)v3.1并非简单功能叠加,而是围绕“语义可验证性”与“执行上下文感知”两大原则重构协议内核。其核心语义层引入了显式状态约束断言(State …...
私有化视频会议系统/私有化视频会议解决方案EasyDSS技术架构解析与应用实践
在数字化转型的浪潮中,视频会议已成为政企日常协作的核心纽带,但公有云会议平台的数据安全隐患、合规性短板,始终是政务、金融、军工等涉密领域的心头之患。EasyDSS私有化视频会议系统,以数据自主可控为核心,融合全场景…...
新手福音:在快马平台通过cmhhc项目轻松入门编程
作为一个刚接触编程的新手,我最近在InsCode(快马)平台上尝试实现了一个简单的字母加密工具cmhhc。这个项目特别适合像我这样的初学者,因为它涉及文件操作、字符串处理等基础但实用的编程概念。下面分享我的学习过程和心得体会。 理解项目需求 首先明确cm…...
