Linux 下查找运行中的 Java 进程及 .jar 文件位置
在 Linux
环境中,有时我们需要查找正在运行的 Java
进程以及它们对应的 .jar
文件位置。本文将介绍如何使用命令行工具来实现这一目标。
前言
在 Linux
系统中,我们经常需要监控正在运行的应用程序,特别是在出现问题时,了解应用程序是如何启动的,以及其 .jar
文件的确切位置是非常有用的。本文将指导您如何查找运行中的 Java
进程以及对应的 .jar
文件位置。
查找运行中的 Java 进程
步骤 1: 使用 ps 命令列出所有 Java 进程
使用 ps 命令结合 grep 来列出所有运行中的 Java 进程:
ps aux | grep java
这将列出所有包含 java
字符串的进程。通常情况下,Java
应用程序的进程名中会包含 java
字符串。
示例输出
root 1613 1.2 11.8 4679516 949500 ? Sl 11:07 3:06 java -Dfile.encoding=utf-8 -jar qiein-purchase-0.0.1-SNAPSHOT-exec.jar --spring.profiles.active=local
root 3041 0.0 5.2 3128280 424212 ? Sl Aug16 10:16 java -Dfile.encoding=utf-8 -Xmx512m -Xms512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/log/gc -verbose:gc -Xloggc:gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintReferenceGC -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar inwuoo-pay-0.0.1-SNAPSHOT.jar
root 3552 0.0 0.0 112644 968 pts/0 S+ 15:20 0:00 grep --color=auto java
步骤 2: 获取完整的输出格式,包括列标题
如果您希望看到完整的输出格式,包括列标题,可以使用以下命令:
echo "USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND" && ps aux | grep java
示例输出
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1613 1.2 11.8 4679516 949500 ? Sl 11:07 3:06 java -Dfile.encoding=utf-8 -jar qiein-purchase-0.0.1-SNAPSHOT-exec.jar --spring.profiles.active=local
root 3041 0.0 5.2 3128280 424212 ? Sl Aug16 10:16 java -Dfile.encoding=utf-8 -Xmx512m -Xms512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/log/gc -verbose:gc -Xloggc:gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintReferenceGC -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar inwuoo-pay-0.0.1-SNAPSHOT.jar
root 3552 0.0 0.0 112644 968 pts/0 S+ 15:20 0:00 grep --color=auto java
ps 命令输出列详解
ps 命令输出列提供了关于进程的重要信息。以下是各个列的含义:
USER
:- 含义: 进程的所有者用户名。
- 用途: 显示哪个用户拥有该进程。
PID
:- 含义: 进程 ID。
- 用途: 用于唯一标识一个进程。
%CPU
:
含义: 进程占用的 CPU 百分比。
用途: 显示进程当前使用的 CPU 资源比例。%MEM
:- 含义: 进程占用的物理内存百分比。
- 用途: 显示进程当前使用的物理内存资源比例。
VSZ
:- 含义: 进程使用的虚拟内存大小(单位通常是字节)。
- 用途: 显示进程虚拟内存的总大小。
RSS
:- 含义: 进程使用的常驻集大小(单位通常是字节)。
- 用途: 显示进程实际使用的物理内存大小。
TTY
:- 含义: 终端设备标识符。
- 用途: 显示进程与哪个终端设备关联。
STAT
:- 含义: 进程状态。
- 用途: 显示进程的状态,如运行中(R)、睡眠(S)、停止(T)等。
START
:- 含义: 进程启动的时间。
- 用途: 显示进程开始运行的时间点。
TIME
:- 含义: 进程累计运行时间。
- 用途: 显示进程自启动以来累计使用 CPU 的时间。
COMMAND
:- 含义: 进程执行的命令。
- 用途: 显示启动进程时使用的命令行参数。
查看该进程的详细命令行参数
在列出的进程中找到您感兴趣的 Java 进程,并注意它的进程 ID(PID)。然后使用 ps 命令加上 -p 和 -o 参数来查看该进程的详细命令行参数:
ps -p <PID> -o args=
示例
java -Dfile.encoding=utf-8 -jar xx.jar --spring.profiles.active=prod
查找 .jar 文件位置
步骤 1: 获取 Java 进程的工作目录
使用 ps 命令来获取 Java 进程的工作目录:
ps -p <PID> -o cwd=
注意⚠️:这里的 <PID>
是您在第一步中找到的 Java 进程的 PID。
示例
假设您找到了 Java 进程的 PID 为 1613,您可以使用以下命令来获取该进程的工作目录:
ps -p 1613 -o cwd=
步骤 2: 在工作目录中查找 .jar 文件
接下来,在获取到的工作目录中查找 .jar 文件。您可以使用 find 命令来查找 .jar 文件:
find /path/to/jar/directory -name "*.jar"
示例
假设您已经获得了工作目录为 /path/to/jar/directory,您可以使用以下命令来查找 .jar 文件:
find /path/to/jar/directory -name "*.jar"
步骤 3: 处理未显示工作目录的情况
如果使用 ps -p <PID> -o cwd=
命令输出 -
,这意味着进程的工作目录没有被正确报告。您可以尝试使用以下命令来获取进程的工作目录:
ls -l /proc/<PID>/cwd
示例
假设您已经确认了 Java 进程的 PID
为 1613,并且您以 root 用户身份运行命令,但仍然得到了 - 在这里插入代码片
的输出,您可以尝试使用 ls -l /proc/1613/cwd
:
ls -l /proc/1613/cwd
示例输出
total 0
drwxr-xr-x 2 root root 4096 Aug 29 12:34 .
drwxr-xr-x 3 root root 4096 Aug 29 12:34 ..
drwxr-xr-x 4 root root 4096 Aug 29 12:34 lib
从上面的输出中,我们可以看到 /proc/1613/cwd
指向的工作目录。通常情况下,这会是一个符号链接指向实际的工作目录。
最后
通过上述步骤,您可以找到运行中的 Java
进程以及对应的 .jar
文件位置。这对于诊断和管理应用程序非常有用。希望这篇文章对您有所帮助!
相关文章:

Linux 下查找运行中的 Java 进程及 .jar 文件位置
在 Linux 环境中,有时我们需要查找正在运行的 Java 进程以及它们对应的 .jar 文件位置。本文将介绍如何使用命令行工具来实现这一目标。 前言 在 Linux 系统中,我们经常需要监控正在运行的应用程序,特别是在出现问题时,了解应用程…...

Openwrt 安装 AX210 无线网卡
安装 TTYD 我安装的是官方原版的 Openwrt,首先需要安装 YYTD 来从网页控制 Openwrt。 安装驱动 参考这个链接,跟着做。 iwlwifi-firmware-ax210 不要直接拷贝粘贴,CSDN 复制文字最后面有网站添加的信息。 lspci opkg update opkg instal…...
在VitePress中进行页面链接:最佳实践与实例
在使用VitePress构建静态网站时,页面之间的链接是必不可少的。本文将介绍如何在VitePress中正确链接页面,包括内部页面和外部非VitePress页面的链接方法,并通过实例代码进行详细解释。 一、链接VitePress内部页面 在VitePress中,…...

Qt/C++百度地图/高德地图/天地图/腾讯地图/谷歌地图/加载绘图工具栏
一、前言说明 在地图中提供一个绘图工具栏,可以便捷的在地图上添加各种覆盖物,比如折线、多边形、矩形、圆形等,然后可以获取这些覆盖物的路径以及中心点等属性。这里有几个小插曲,比如百度地图gl版本默认不提供这个功能…...
Vue2 与 Vue3 的区别有哪些
Vue 2 和 Vue 3 在许多方面都有显著的区别,包括性能、API 设计、功能特性等。以下是它们主要的区别: 1. 响应式系统 Vue 2: 基于 Object.defineProperty: Vue 2 使用 Object.defineProperty 来实现响应式数据。这种方法在处理对象属性时有一定的局限性…...
加锁造成的线程优先级反转
优先级反转(Priority Inversion),也称优先级翻转,一般是在优先级不同的多线程环境中发生。在桌面操作系统中,线程的优先级不是太重要,因此较少见优先级反转的现象。但是,优先级反转是实时操作系统(RTOS)中一个常见的问题,特别是在采用优先级调度算法的系统中。这个问…...
【日常记录-Java】SpringBoot中使用无返回值的异步方法
Author:赵志乾 Date:2024-09-05 Declaration:All Right Reserved!!! 1. 简介 在SpringBoot中,使用Async注解可以很方便地标记一个方法为异步执行。好处是调用者无需等待这些方法完成便可继续执…...

【深度学习】多层感知机的从零开始实现与简洁实现
可以说,到现在我们才真正接触到深度网络。最简单的深度网络称为多层感知机。 多层感知机由多层神经元组成,每一层与它的上一层相连,从中接收输入;同时每一层也与它的下一层相连,影响当前层的神经元。 和以前相同&…...

4、Django Admin对自定义的计算字段进行排序
通常,Django会为模型属性字段,自动添加排序功能。当你添加计算字段时,Django不知道如何执行order_by,因此它不会在该字段上添加排序功能。 如果要在计算字段上添加排序,则必须告诉Django需要排序的内容。你可以通过在…...

rsync搭建全网备份
rsync搭建全网备份 1. 总体概述1.1 目标1.2 简易指导图1.3 涉及工具或命令1.4 环境 2. 实施2.1 配置备份服务器2.2 备份文件准备2.3 整合命令2.4 扩展功能 1. 总体概述 1.1 目标 本次搭建目标: 每天定时把服务器数据备份到备份服务器备份完成后进行校验把过期数据…...

网络安全售前入门09安全服务——安全加固服务
目录 1.服务概述 2.流程及工具 2.1服务流程 2.2服务工具 3.服务内容 4.服务方式 5.风险规避措施 6.服务输出 1.服务概述 安全加固服务是参照风险评估、等保测评、安全检查等工作的结果,基于科学的安全思维方式、长期的安全…...
【Android】GreenDao数据库的使用方式
需求 使用GreenDao数据库进行数据的存储。 介绍 GreenDao 是一个轻量级的对象关系映射(ORM)库,用于简化 Android 应用中的数据库操作。它提供了以下主要功能: 简化数据库操作:通过注解定义实体类,Green…...
搜索算法之线性搜索详细解读(附带Java代码解读)
1. 基本概念 线性搜索(Linear Search),也称为顺序搜索,是一种在列表中查找特定元素的算法。它从列表的第一个元素开始,逐个检查每个元素,直到找到目标元素或检查完所有元素。 2. 工作原理 线性搜索的操作…...

Quartz.Net_依赖注入
简述 有时会遇到需要在IJob实现类中依赖注入其他类或接口的情况,但Quartz的默认JobFactory并不能识别具有有参构造函数的IJob实现类,也就无法进行依赖注入 需要被依赖注入的类: public class TestClass {public TestClass(Type jobType, s…...

【系统架构设计师-2011年】综合知识-答案及详解
更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【第1题】【第2~4题】【第5~7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18~19题】【第20~21题】【第22题】【第23题】【第24题】【第25题】【第2…...

World of Warcraft [CLASSIC][80][Grandel]Sapphire Hive Drone
Sapphire Hive Drone 蓝玉虫巢雄蜂 蓝玉虫巢巨峰 索拉查盆地 实用性不强,好看是好看,模型很大,无奈栏位太少...
Unity 对接 Android 第三方广告,App 切换到后台后,再次打开时,第三方广告被销毁导致无法触发回调逻辑的问题
该问题是由发行进行游戏测试时遇到并反馈的。大致情况如下: 1. 当触发了插屏广告后,在关闭广告前将 App 切换到后台,之后再次打开 App,此时插屏广告消失,并切游戏卡死。 2. 当触发激励视频广告后,在广告展…...
Kafka Broker处于高负载状态(例如消息处理量大或系统资源不足),无法及时响应消费者的请求
Caused by: org.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before the position for partition activity-0 could be determined。 出现这个错误的原因是Kafka消费者在尝试获取分区(activity-0)的位置信息时,超时了。在60秒内无法确…...

相关二叉树进阶面试题的讲解?看这一篇足矣
引子:我们在之前学过c语言的二叉树,但是c来做更好!本期要讲的题目如下(其实有点拖欠了,很久之前,就想写这个了,今天终于克服自己的欲望,达成了这个愿望) 1, 二叉树创建字…...
Nginx部署前端Vue项目的深度解析
目录 一、准备工作 1.1 开发环境 1.2 服务器环境 1.3 Nginx安装 二、构建Vue项目 三、上传静态文件到服务器 四、配置Nginx 五、测试并重新加载Nginx 六、访问Vue应用 七、高级配置 7.1 启用HTTPS 7.2 启用Gzip压缩 7.3 缓存控制 八、常见问题与解决方案 8.1 40…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...