Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在Linux下快速找到Java进程启动的JAR文件

如何在Linux下快速找到Java进程启动的JAR文件

原创
作者头像
高久峰
发布于 2024-06-28 10:35:00
发布于 2024-06-28 10:35:00
1.7K0
举报

如何在Linux下快速找到Java进程启动的JAR文件

在线上环境中,当CPU占用率异常高时,经常需要定位到是哪个Java进程导致的,并进一步找到该进程启动的JAR文件。以下提供了几种方法来帮助你快速找到这些信息。

方法一:通过/proc文件系统
  1. 查看Java进程编号: 使用top命令或其他进程管理工具查看Java进程的PID(进程编号)。
  2. 查看进程文件/proc/[PID]/exe 是一个指向进程实际执行文件的符号链接。但通常这会指向Java运行时(如/usr/java/jdk1.8.0_121/jre/bin/java),而不是JAR文件本身。
  3. 查看进程启动目录/proc/[PID]/cwd 是一个指向进程当前工作目录的符号链接。这通常是JAR文件所在的目录,但JAR文件的完整路径和名称不会直接给出。

你可以使用ls -l /proc/[PID]/cwd来查看该目录的内容,并手动查找JAR文件。

方法二:使用jps命令

jps(Java Virtual Machine Process Status Tool)是JDK提供的一个命令行工具,它可以列出所有正在运行的Java进程,并显示它们的PID以及启动的JAR文件或类的完全限定名。

使用jps -l命令可以列出带有JAR文件或类名的Java进程。

方法三:使用pgrep命令

pgrep命令用于查找与给定模式匹配的进程,并打印出它们的PID。结合-a选项,pgrep还可以打印出完整的命令行参数。

使用pgrep -a java命令可以列出所有包含java关键字的进程及其完整的命令行参数。这通常包括启动Java进程的完整命令,包括JAR文件的路径。

总结
  • /proc文件系统提供了关于进程的详细信息,但可能需要手动查找JAR文件。
  • jps命令直接列出了Java进程的PID和启动的JAR文件或类名,非常方便。
  • pgrep命令可以列出包含java关键字的进程及其完整命令行参数,通常也包含JAR文件的路径。

在实际使用中,你可以根据具体情况选择最适合你的方法。如果只需要快速查看正在运行的Java进程及其启动的JAR文件,jps命令通常是最简单直接的选择。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
李兴华Java核心技术讲解--类集框架笔记
3.1、认识类集(理解) 如果现在要想保存多个对象,肯定使用对象数组完成,但是对象数组本身有一个最大的问题在于其数据的长度,所以后来使用了链表完成了动态对象数组的开发,可是链表的开发难度实在是很大,而且如果一个链表要想真正去使用,只依靠之前所编写的还不够,还需要进行一些代码的调优。 而在JDK 1.2之后正式引入了类集的概念,类集是一种动态的对象数组,属于各个数据结构的实现类,在整个类集之中主要的组成是一些核心的操作接口:Collection、List、Set、Map、Iterator、Enumeration。 3.2、单值保存的最大父接口:Collection(重点) 所谓的单值保存指的是每一次操作只会保存一个对象,就好像之前的链表程序一样,每一次只保存了一个对象,在Collection接口之中定义了如下的一些操作方法。 No. 方法名称 类型 描述 1 public boolean add(E e) 普通 数据增加 2 public void clear() 普通 清除数据 3 public boolean contains(Object o) 普通 查找数据是否存在 4 public boolean isEmpty() 普通 判断是否为空集合 5 public Iterator iterator() 普通 为Iterator接口实例化 6 public boolean remove(Object o) 普通 删除数据 7 public int size() 普通 取得集合的个数 8 public Object[] toArray() 普通 将集合变为对象数组 在Collection接口之中一共定义了15个方法,在所有的方法之中,只有两个方法最为常用:add()、iterator()。不过从开发上讲,很少会去直接使用Collection,都会使用Collection的两个子接口:List、Set。 3.3、允许重复的子接口:List(重点,80%) List是Collection的一个最为常用的子接口,首先这个接口的定义如下: public interface List extends Collection 但是List接口对Collection接口进行了大量的扩充,但是扩充之后的主要方法: No. 方法名称 类型 描述 1 public E get(int index) 普通 取得指定索引位置上的数据 2 public E set(int index, E element) 普通 修改指定索引位置上的数据 3 public ListIterator listIterator() 普通 为ListIterator接口实例化 但是以上的三个方法,只是针对于List接口起作用,而List接口有两个常用子类:ArrayList、Vector。 3.3.1、新的子类:ArrayList,95% ArrayList是List子接口使用最多的一个子类,而这个类的定义如下: public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable 按照面向对象的概念来讲,现在使用ArrayList主要的目的是为List接口实例化,所有的操作方法都以List接口为主。 范例:使用ArrayList进行List接口的功能验证 package cn.mldn.demo; import java.util.ArrayList; import java.util.List; public class TestDemo { public static void main(String[] args) throws Exception { List all = new ArrayList() ; all.add(“Hello”) ; all.add(“Hello”) ; // 内容重复了 all.add(“World”) ; for (int x = 0; x < all.size(); x++) { String str = all.get(x) ; // get()方法只有List接口有 System.out.print(str + “、”); } } } 在使用代码的时候可以发现,List集合之中即使存在了重复数据,也可以正常的保存,而且数据保存的顺序就是存入数据的顺序。 范例:使用List集合修改之前的程序 package cn.mldn.demo; import java.util.ArrayList; import java.util.List; interfac
葆宁
2019/04/18
6330
Java 类集初探
List属于接口,如果想使用接口进行操作,就必须存在子类;使用 ArrayList 子类实现(和Vector子类)
Mirror王宇阳
2020/11/10
5930
Java——类集框架:List集合接口的详解及应用举例
JDK1.2开始引入了类集框架的概念,Java中可以方便实现动态数组的操作,JDK1.5中泛型的出现,类集又避免了Object类对程序的影响。所有的类集开发类都保存在java.util包中。从JDK1.8中,类集支持了数据流的操作,支持MapReduce的操作。
Winter_world
2020/09/25
7950
Java——类集框架:List集合接口的详解及应用举例
第41节:Java当中的类集框架
类集框架是一组类和接口的集合,位于java.util包当中,是用来用户存储和管理对象的,在这个类集合框架中,我们主要学习的为三大类,分别是集合,列表和映射。
达达前端
2019/07/03
6430
第41节:Java当中的类集框架
第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架
大家好,我是 Vic,今天给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢
达达前端
2019/07/03
6750
Java 类集框架(Set, List, Map)的使用
Set 接口和 List 接口都是 Collection 的子接口,因此我们先看看Collection 接口中有什么方法:
Java团长
2018/07/23
9500
Java 类集框架(Set, List, Map)的使用
第48节:Java当中的集合框架
结果来了一位插班生,该同学因为觉得学IT行业好,才要求老师转专业的。可以结果没有多余的空位了,数组里的长度都是安排好的,没有空间了。
达达前端
2019/07/03
5300
第48节:Java当中的集合框架
类集框架(一)
在Collection中定义了15个方法,在所以的方法中,只有两个方法最为常用:add(),iterator().从开发来讲,很少直接使用Collection。
MaybeHC
2024/04/23
960
Java当中的集合框架
结果来了一位插班生,该同学因为觉得学IT行业好,才要求老师转专业的。可以结果没有多余的空位了,数组里的长度都是安排好的,没有空间了。
达达前端
2022/04/29
6000
Java当中的集合框架
Java基础入门笔记06——String类和StringBuffer类,Java中的三大集合,Set集合,List集合,Map集合,Collection类
存储过程: 当HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,从而决定该对象在HashSet中的位置
全栈程序员站长
2022/09/21
6670
Java基础教程--安卓入门教程(七)
接口的基本语法 接口的基本语法(一) 使用interface定义 接口当中的方法都是抽象方法; 接口当中的方法都是public权限 接口中全是抽象函数,不能生成对象 interface USB{  public void read();  public void write(); } class USBPhone implements USB{ //复写  public void read(){   System.out.println("USBPhone read");  }  public void write(){   System.out.println("USBPhone write");  } } class Test{  public static void main(String args[]){   USBPhone usbPhone = new USBPhone();   USB usb = usbPhone;   usb.read();   usb.write();  } }
达达前端
2022/04/29
7070
Java基础教程--安卓入门教程(七)
第十九天 集合-Map接口容器工具类集合框架总结【悟空教程】
Map集合的特点,如是否可重复,是否有序仅作用在键上,如HashMap集合的键不得重复,值可以重复。
Java帮帮
2018/07/26
1.2K0
第十九天 集合-Map接口容器工具类集合框架总结【悟空教程】
Java集合 Map 集合 与 操作集合的工具类: Collections 的详细说明
如下是 Set 中的 Key 存储自定义类 Person5 ,其中并没有重写Object 中的 equals() 方法和 hashCode()方法。会出现 Key 存储到重复的数据。
RainbowSea
2023/02/03
1K0
Map、斗地主案例
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100193.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/29
1.4K0
Map、斗地主案例
Java集合综合面试题
面试题:现在在一个List集合之中保存了多个String对象,要求将这个List集合变为Set集合,而后再将这个Set集合之中的全部数据保存在Map集合的value里面,而Map集合的key使用UUID生成,最后将Map中的数据进行迭代输出。
葆宁
2019/04/18
7550
Java集合框架
1.集合和数组的区别 数组长度是固定的,集合长度是可变的 数组可以存储基本类型和引用类型,集合只能存储引用类型 2.Collection体系集合 List接口的特点: 有序、有下标、元素可重复 Set接口的特点: 无序、无下标、元素不能重复 2.1Collection父接口 特点:代表一组任意类型的对象,无序、无下标、不能重复 方法: boolean add(Object obj) //添加一个对象 boolean addAll(Collection c) //将一个集合中的所有对象添加到此集合中 void
用户7353950
2022/06/23
2.4K0
Java集合:整体结构
一、Java中集合   Java中集合类是Java编程中使用最频繁、最方便的类。集合类作为容器类可以存储任何类型的数据,当然也可以结合泛型存储指定的类型(不过泛型仅仅在编译期有效,运行时是会被擦除的)。集合类中存储的仅仅是对象的引用,并不存储对象本身。集合类的容量可以在运行期间进行动态扩展,并且还提供很多很方便的方法,如求集合的并集、交集等。 二、集合类结构   Java中的集合包含多种数据结构,如链表、队列、哈希表等。从类的继承结构来说,可以分为两大类,一类是继承自Collection接口,这类集合包含L
用户2140019
2018/05/18
5800
java之集合(Set、List、Map)
HashSet是Set接口的典型实现,大多数时候使用Set集合时都会使用这个实现类。我们大多数时候说的Set集合指的就是HashSet。
西西嘛呦
2020/08/26
5240
Java之集合初探(二)Iterator(迭代器),collections,打包/解包(装箱拆箱),泛型(Generic),comparable接口
Iterator(迭代器) 所有实现了Collection接口的容器都有一个iterator方法, 用来返回一个实现了Iterator接口的对象 Iterator对象称作迭代器, 用来方便的实现对容器内的元素的遍历 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。   Java中的Iterator功能比较简单,并且只能单向移动:   (1) 使用方法iterator()要求容器返回一个Ite
二十三年蝉
2018/02/28
6820
Java入门(13)-- 集合类
java.util包中提供了一些集合类,这些集合类又被称为容器。集合类的长度是可变的,用来存放对象的引用。
爱学习的程序媛
2022/04/07
2290
Java入门(13)-- 集合类
推荐阅读
相关推荐
李兴华Java核心技术讲解--类集框架笔记
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档