Linux 查看jar进程的程序路径和相关信息

本文介绍了一种在Linux系统中查询进程详细信息的方法,特别是如何获取进程的绝对路径。通过使用/proc文件系统,可以轻松地找到进程的执行文件位置以及其他相关信息。

Linux 查看jar进程的程序路径和相关信息

有时需要查一个进程的程序路径,例如如下一个a.jar

通过pstop命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等。

可以通过以下的方法来查看进程的详细信息:

Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过ll或ls –l命令即可查看。

ll /proc/PID

文件说明:

cwd符号链接的是进程运行目录;

exe符号连接就是执行程序的绝对路径;

cmdline就是程序运行时输入的命令行命令;

environ记录了进程运行时的环境变量;

fd目录下是进程打开或使用的文件的符号连接

例如:

本文在CentOS7下实验。

<think>嗯,用户需要的是在Linux系统中查看jar路径的方法。从历史引用材料看,之前提供的都是关于jar包操作的基础命令(如解压查看进程管理),但用户这次明确聚焦在"路径查询"这一具体需求上。用户可能是Java运维人员或开发者,遇到需要定位jar包物理存储位置的问题。这类需求通常出现在排查环境配置、修复依赖冲突或优化部署时。用户参考了之前提供的jar操作命令,但没有找到直接答案,所以再次提问时特别强调"路径"二字。引用材料中有三处相关线索值得注意:1.引用1提到cp/opt/services/命令,暗示jar包可能存放在/opt这类服务目录2.引用2的whichjavaecho$PATH展示了Java环境定位思路,可类比到jar包查询3.引用4的nohup启动命令显示jar路径通常在启动参数中需要补充用户可能忽略的深层需求:-是否在找特定进程加载的jar路径?(运行时定位)-还是单纯查找磁盘上的jar文件?(静态搜索)因此准备分两个维度回答:1.动态定位:通过进程信息追溯(推荐方案,最精准)2.静态查找:全盘搜索(适合已知文件名时)特别注意引用3展示的jarvtf技巧虽能看包内容,但不解决路径定位问题,所以不采用。最后用户给的参考引用其实比实际需要的更基础,但基于用户可能没有root权限、环境复杂等现实情况,会把lsof等命令的权限要求标注清楚,避免用户误操作。</think> 在Linux系统中查看JAR路径主要有两种场景:**定位已部署的JAR文件****查询运行中进程加载的JAR路径**。以下是具体方法: --- ### 一、查找磁盘中的JAR文件路径(静态定位) #### 1. 使用 `find` 命令全局搜索 ```bash find / -name "*.jar" 2>/dev/null # 全盘搜索(需sudo权限) ``` 或限定搜索范围: ```bash find /opt /home /usr -name "*.jar" 2>/dev/null # 在常见部署目录搜索 ``` #### 2. 结合 `grep` 过滤特定JAR ```bash find / -name "*.jar" 2>/dev/null | grep project-name ``` --- ### 二、查看运行中Java进程加载的JAR路径(动态定位) #### 1. 通过进程信息定位 ```bash # 先查Java进程PID ps -ef | grep java # 根据PID查JAR路径(假设PID=12345) ls -l /proc/12345/cwd # 查看进程工作目录 lsof -p 12345 | grep '\.jar$' # 列出进程加载的JAR文件 ``` #### 2. 直接检索进程命令 ```bash ps -ef | grep java | awk -F'-jar' '{print $2}' | awk '{print $1}' ``` **输出示例**: `/opt/app/project.jar` # 显示实际执行的JAR绝对路径 --- ### 三、特殊场景:从归档中定位类文件路径 若需确认JAR内的类文件位置(如排查冲突),使用 `jar` 命令: ```bash jar vtf /path/to/project.jar | grep 'com/example/MyClass.class' # 查类文件路径 [^3] ``` --- ### 关键区别说明 | **场景** | **推荐命令** | **用途** | |-----------------------|--------------------------------|-----------------------------| | 查找磁盘中的JAR | `find` | 部署文件定位 | | 运行中进程JAR路径 | `lsof -p PID` / `ps`过滤 | 实时进程依赖检查 | | 排查JAR内类文件 | `jar vtf` + `grep` | 解决类冲突或版本问题 [^3] | > **注意**: > 1. 动态查询需进程运行时使用 > 2. 使用 `lsof` 可能需要 `sudo` 权限 > 3. 若服务通过 `nohup java -jar &` 启动,可通过 `jobs` 查看后台进程ID --- ### 相关问题 1. 如何查看Java进程加载的所有JAR依赖? ➠ 使用 `jcmd <PID> VM.class_hierarchy | grep jar` 或 `-verbose:class` 启动参数 2. Linux下如何永久保存JAR进程的启动路径? ➠ 通过systemd服务配置 `ExecStart=/usr/bin/java -jar /path/to/app.jar` [^4] 3. 若 `lsof` 不可用,如何替代查询进程JAR路径? ➠ 用 `pwdx <PID>` 查工作目录 + `strings /proc/<PID>/cmdline` 解析启动命令 4. 为什么解压JAR后找不到预期的配置文件? ➠ 可能是多层嵌套JAR,需检查 `BOOT-INF/classes/` 目录(常见于Spring Boot)[^1] > 引用说明: > [^1]: 非解压查看JAR内容的 `jar vtf` 用法 > [^3]: 通过 `jar vtf` 过滤JAR内文件路径的技巧 > [^4]: 持久化运行JAR路径存储在systemd配置中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值