当前位置: 首页 > news >正文

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

Openwrt 安装 AX210 无线网卡

安装 TTYD 我安装的是官方原版的 Openwrt&#xff0c;首先需要安装 YYTD 来从网页控制 Openwrt。 安装驱动 参考这个链接&#xff0c;跟着做。 iwlwifi-firmware-ax210 不要直接拷贝粘贴&#xff0c;CSDN 复制文字最后面有网站添加的信息。 lspci opkg update opkg instal…...

在VitePress中进行页面链接:最佳实践与实例

在使用VitePress构建静态网站时&#xff0c;页面之间的链接是必不可少的。本文将介绍如何在VitePress中正确链接页面&#xff0c;包括内部页面和外部非VitePress页面的链接方法&#xff0c;并通过实例代码进行详细解释。 一、链接VitePress内部页面 在VitePress中&#xff0c…...

Qt/C++百度地图/高德地图/天地图/腾讯地图/谷歌地图/加载绘图工具栏

一、前言说明 在地图中提供一个绘图工具栏&#xff0c;可以便捷的在地图上添加各种覆盖物&#xff0c;比如折线、多边形、矩形、圆形等&#xff0c;然后可以获取这些覆盖物的路径以及中心点等属性。这里有几个小插曲&#xff0c;比如百度地图gl版本默认不提供这个功能&#xf…...

Vue2 与 Vue3 的区别有哪些

Vue 2 和 Vue 3 在许多方面都有显著的区别&#xff0c;包括性能、API 设计、功能特性等。以下是它们主要的区别&#xff1a; 1. 响应式系统 Vue 2: 基于 Object.defineProperty: Vue 2 使用 Object.defineProperty 来实现响应式数据。这种方法在处理对象属性时有一定的局限性…...

加锁造成的线程优先级反转

优先级反转(Priority Inversion),也称优先级翻转,一般是在优先级不同的多线程环境中发生。在桌面操作系统中,线程的优先级不是太重要,因此较少见优先级反转的现象。但是,优先级反转是实时操作系统(RTOS)中一个常见的问题,特别是在采用优先级调度算法的系统中。这个问…...

【日常记录-Java】SpringBoot中使用无返回值的异步方法

Author&#xff1a;赵志乾 Date&#xff1a;2024-09-05 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 简介 在SpringBoot中&#xff0c;使用Async注解可以很方便地标记一个方法为异步执行。好处是调用者无需等待这些方法完成便可继续执…...

【深度学习】多层感知机的从零开始实现与简洁实现

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

4、Django Admin对自定义的计算字段进行排序

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

rsync搭建全网备份

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

网络安全售前入门09安全服务——安全加固服务

目录 1.服务概述 2.流程及工具 2.1服务流程 2.2服务工具 3.服务内容 ​​​​​​​4.服务方式 ​​​​​​​5.风险规避措施 ​​​​​​​6.服务输出 1.服务概述 安全加固服务是参照风险评估、等保测评、安全检查等工作的结果,基于科学的安全思维方式、长期的安全…...

【Android】GreenDao数据库的使用方式

需求 使用GreenDao数据库进行数据的存储。 介绍 GreenDao 是一个轻量级的对象关系映射&#xff08;ORM&#xff09;库&#xff0c;用于简化 Android 应用中的数据库操作。它提供了以下主要功能&#xff1a; 简化数据库操作&#xff1a;通过注解定义实体类&#xff0c;Green…...

搜索算法之线性搜索详细解读(附带Java代码解读)

1. 基本概念 线性搜索&#xff08;Linear Search&#xff09;&#xff0c;也称为顺序搜索&#xff0c;是一种在列表中查找特定元素的算法。它从列表的第一个元素开始&#xff0c;逐个检查每个元素&#xff0c;直到找到目标元素或检查完所有元素。 2. 工作原理 线性搜索的操作…...

Quartz.Net_依赖注入

简述 有时会遇到需要在IJob实现类中依赖注入其他类或接口的情况&#xff0c;但Quartz的默认JobFactory并不能识别具有有参构造函数的IJob实现类&#xff0c;也就无法进行依赖注入 需要被依赖注入的类&#xff1a; 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 蓝玉虫巢雄蜂 蓝玉虫巢巨峰 索拉查盆地 实用性不强&#xff0c;好看是好看&#xff0c;模型很大&#xff0c;无奈栏位太少...

Unity 对接 Android 第三方广告,App 切换到后台后,再次打开时,第三方广告被销毁导致无法触发回调逻辑的问题

该问题是由发行进行游戏测试时遇到并反馈的。大致情况如下&#xff1a; 1. 当触发了插屏广告后&#xff0c;在关闭广告前将 App 切换到后台&#xff0c;之后再次打开 App&#xff0c;此时插屏广告消失&#xff0c;并切游戏卡死。 2. 当触发激励视频广告后&#xff0c;在广告展…...

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)的位置信息时&#xff0c;超时了。在60秒内无法确…...

相关二叉树进阶面试题的讲解?看这一篇足矣

引子&#xff1a;我们在之前学过c语言的二叉树&#xff0c;但是c来做更好&#xff01;本期要讲的题目如下(其实有点拖欠了&#xff0c;很久之前&#xff0c;就想写这个了&#xff0c;今天终于克服自己的欲望&#xff0c;达成了这个愿望&#xff09; 1&#xff0c; 二叉树创建字…...

Nginx部署前端Vue项目的深度解析

目录 一、准备工作 1.1 开发环境 1.2 服务器环境 1.3 Nginx安装 二、构建Vue项目 三、上传静态文件到服务器 四、配置Nginx 五、测试并重新加载Nginx 六、访问Vue应用 七、高级配置 7.1 启用HTTPS 7.2 启用Gzip压缩 7.3 缓存控制 八、常见问题与解决方案 8.1 40…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...