记录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服务分开配置࿰…...
新手必看!AutoGen Studio界面详解与模型配置全流程
新手必看!AutoGen Studio界面详解与模型配置全流程 1. AutoGen Studio简介 AutoGen Studio是一个低代码AI智能体开发平台,它基于AutoGen AgentChat框架构建,旨在帮助开发者快速创建、配置和组合AI代理。通过直观的可视化界面,用…...
mdp与GitHub Flavored Markdown兼容性深度解析:终极完整指南
mdp与GitHub Flavored Markdown兼容性深度解析:终极完整指南 【免费下载链接】mdp A command-line based markdown presentation tool. 项目地址: https://gitcode.com/gh_mirrors/md/mdp mdp是一款基于命令行的markdown演示工具,它为用户提供了在…...
告别 Thread.stop():并发编程的最高礼仪——两阶段终止模式
告别 Thread.stop():并发编程的最高礼仪——两阶段终止模式各位正在死磕并发编程的同学们,大家平时在学习多线程时,可能都看到过书上的一句警告:“千万不要使用 Thread.stop() 来停止线程,它是极其危险且已被废弃的”。…...
全流程效率提升:Scarab开源模组管理器的跨平台解决方案
全流程效率提升:Scarab开源模组管理器的跨平台解决方案 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 当你兴致勃勃地想为《空洞骑士》安装模组时,是否…...
基于多目标哈里斯鹰算法及模型预测控制(MPC)的储能和风电平抑波动研究(Matlab代码实现)
👨🎓个人主页 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰&a…...
仅限核心架构师查阅:Python无锁GIL环境下的并发成本熔断机制(含实时监控脚本+自动降级策略)
第一章:Python无锁GIL环境下的并发模型成本控制策略全景概览在标准 CPython 解释器中,全局解释器锁(GIL)本质限制了多线程对 CPU 密集型任务的并行执行能力。然而,“无锁 GIL 环境”并非指移除 GIL 本身,而…...
FlinkX异构数据同步:从安装到实战的5个关键技巧
FlinkX异构数据同步:从安装到实战的5个关键技巧 在数据驱动的时代,企业常常面临不同数据源之间高效同步的挑战。FlinkX作为一款基于Apache Flink的分布式数据同步工具,凭借其强大的异构数据源支持能力和灵活的插件架构,正在成为技…...
Linux/Android文件系统架构深度剖析
文章目录一、preface1、资料快车2、概述3、专业术语二、Linux文件系统架构1、文件系统框架图2、文件系统之块设备字符设备框架3、内核如何读取文件?4、文件系统类型1)持久文件系统1、本地文件系统2、网络文件系统2)运行时文件系统3࿰…...
SIGMOD 2024论文解读:5篇向量检索新研究,从混合查询到Serverless数据库的实战启示
SIGMOD 2024向量检索技术实战指南:从混合查询到Serverless架构的工程化思考 当我们在构建下一代智能应用时,向量检索技术已经从实验室走向了生产环境的核心位置。今年SIGMOD会议上发布的几篇重量级论文,为这个快速发展的领域注入了新的活力。…...
2026普通人如何逆袭进大模型圈?吴师兄亲授4大方向+3坑避坑+真实学习路线
站在现在回头看,会发现一个有趣的现象: AI 大潮滚滚 2 年,流量的风向能变,岗位的 JD 能变,各家模型能天天更新,但真正能落地的东西,并没有变。 这 2 年里,我带过很多转行同学&#…...
