Linux 下查找运行中的 Java 进程及 .jar 文件位置

news/2024/9/18 23:20:25/ 标签: java, linux, 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__95">查找 .jar 文件位置

步骤 1: 获取 Java 进程的工作目录

使用 ps 命令来获取 Java 进程的工作目录:

ps -p <PID> -o cwd=

注意⚠️:这里的 <PID> 是您在第一步中找到的 Java 进程的 PID。

示例
假设您找到了 Java 进程的 PID 为 1613,您可以使用以下命令来获取该进程的工作目录:

ps -p 1613 -o cwd=

jar__113">步骤 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 文件位置。这对于诊断和管理应用程序非常有用。希望这篇文章对您有所帮助!


http://www.ppmy.cn/news/1518859.html

相关文章

乐凡三防:工业界的硬核产品——重新定义三防平板的极限

在工业4.0的浪潮中&#xff0c;科技与制造业的深度融合催生了一系列高性能、高耐用的智能产品。乐凡三防平板&#xff0c;作为工业界的新宠&#xff0c;正以其卓越的防护性能和强大的功能&#xff0c;重新定义了三防平板的极限&#xff0c;成为硬核科技的代表。 硬核防护&#…

时空图卷积网络:用于交通流量预测的深度学习框架-1

摘要 准确的交通预测对于城市交通控制和引导至关重要。由于交通流的高度非线性和复杂性&#xff0c;传统方法无法满足中长期预测任务的需求&#xff0c;且往往忽略了空间和时间的依赖关系。本文提出一种新的深度学习框架——时空图卷积网络(STGCN)来解决交通领域的时间序列预测…

在Ubuntu 18.04上安装MySQL的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 介绍 MySQL 是一个开源的数据库管理系统&#xff0c;通常作为流行的 LAMP&#xff08;Linux、Apache、MySQL、PHP/Python/Perl&#xf…

discuz Upload Failed.

baidu搜索关键词 NGINX上传文件大小限制 在Nginx中设置文件上传大小限制&#xff0c;你需要修改client_max_body_size指令。默认情况下&#xff0c;该指令的值为1M&#xff0c;意味着上传文件大小不能超过1MB。 打开Nginx配置文件&#xff08;通常是nginx.conf或者位于/etc/…

pyautogui的一些自动化示例,附代码

以下为您提供一些 pyautogui 的自动化示例及代码&#xff1a; 模拟鼠标点击和移动&#xff1a;import pyautogui # 获取屏幕的宽度和高度 screen_width, screen_height pyautogui.size() # 将鼠标移动到屏幕中心 pyautogui.moveTo(screen_width / 2, screen_height / 2) # 在…

Linux的常见指令

前言 Hello,今天我们继续学习Liunx&#xff0c;上期我们简单了解了Linux的基本用处&#xff0c;并了解了Linux的重要性&#xff0c;今天我们就继续更加深入的学习Linux&#xff0c;进行指令方面的学习&#xff0c;我们可以通过先学习简单的基础命令来学习Linux&#xff0c;并在…

css设置让整个盒子的内容渐变透明(非颜色渐变透明)

css设置让整个盒子的内容渐变透明&#xff08;非颜色渐变透明&#xff09; 效果核心css代码 效果 核心css代码 /* 设置蒙版上下左右渐变显示 */ mask-image: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 10%, rgba(0, 0, 0, 1) 90%, rgba(0, 0, 0, 0) 1…

LuaJit分析(一)LuaJit交叉编译

​​​​​​Android 使用ndk版本 r16b 在luajit2.1.0-beta3目录下创建一个脚本文件&#xff0c;armv7编译代码如下&#xff1a; make clean NDKE:/android-ndk-r16b #ndk路径 NDKABI21 NDKTRIPLEarm-linux-androideabi NDKVER$NDK/toolchains/$NDKTRIPLE-4.9 NDKP$NDKVER/…

QT基础之【模块】

QT基础之【模块】 写在前面版本信息内容全部模块QT基本模块QT附加模块增值模块技术预览模块QT工具 补充模块路径网络资料简要描述 摘要&#xff1a; 1.本文介绍了QT5.12.9的模块&#xff0c;主要核心内容来源于帮助文档&#xff0c;少量整理网络中的资料 2.分析查看安装中径中的…

代码随想录——回文子串(Leetcode 647)

题目链接 我的题解&#xff08;双指针&#xff09; 思路&#xff1a; 当然&#xff0c;以下是对您提供的代码的解释&#xff1a; class Solution {public int countSubstrings(String s) {// 初始化回文子字符串的数量int count 0;// 遍历字符串的每个字符&#xff0c;使用…

嵌入式Linux C应用编程指南-进程、线程(速记版)

第九章 进程 9.1 进程与程序 9.1.1 main()函数由谁调用&#xff1f; C 语言程序总是从 main 函数开始执行&#xff0c;main()函数的原型是&#xff1a; int main(void) 或 int main(int argc, char *argv[])。 操作系统下的应用程序在运行 main()函数之前需要先执行一段引导代…

深入解析HarmonyOS Image组件的使用与优化

在现代移动应用开发中&#xff0c;图像处理是一个至关重要的部分。HarmonyOS 提供了功能强大的图像组件&#xff0c;允许开发者从多种来源显示图像&#xff0c;如本地资源、网络资源、资源文件、媒体库和 Base64图像编码。本篇博客将深入探讨如何接地使用图像组件&#xff0c;并…

Golang | Leetcode Golang题解之第385题迷你语法分析器

题目&#xff1a; 题解&#xff1a; func deserialize(s string) *NestedInteger {index : 0var dfs func() *NestedIntegerdfs func() *NestedInteger {ni : &NestedInteger{}if s[index] [ {indexfor s[index] ! ] {ni.Add(*dfs())if s[index] , {index}}indexreturn…

C/C++二维码生成库qrencode编译与使用

1 qrencode介绍 qrencode 是一个用于生成 QR 码&#xff08;Quick Response Code&#xff09;的工具和库。QR 码是一种矩阵条形码或二维条形码&#xff0c;能够在水平和垂直方向上存储信息。qrencode 支持多种编码方式&#xff0c;并能够生成不同复杂度和错误校正级别的 QR 码…

R语言统计分析——单因素协方差分析

参考资料&#xff1a;R语言实战【第2版】 单因素协方差分析&#xff08;ANCONA&#xff09;扩展了单因素方差分析&#xff08;ANOVA&#xff09;&#xff0c;包含一个或多个定量的协变量。下面使用multcomp包中的litter数据集进行操作&#xff1a; # 加载数据集 data(litter,p…

web笔记:JSP基础

一、什么是JSP&#xff1f; 建立在Servlet规范之上的动态网页开发技术。在JSP文件中&#xff0c;HTML代码与Java代码共同存在。 HTML代码用来实现网页中静态内容的显示。Java代码用来实现网页中动态内容的显示。 二、JSP的运行原理 由JSP引擎(JSP容器)将jsp转换为Servlet 当客…

【生成模型系列(初级)】自编码器——深度学习的数据压缩与重构

【通俗理解】自编码器——深度学习的数据压缩与重构 第一节&#xff1a;自编码器的类比与核心概念 1.1 自编码器的类比 你可以把自编码器想象成一个“智能压缩机”&#xff0c;它能够把输入的数据&#xff08;比如图片&#xff09;压缩成一个更小的表示&#xff08;编码&#…

React 入门第七天:探索状态管理与Context API

在React学习的第七天&#xff0c;我深入了解了React的状态管理机制&#xff0c;特别是如何通过Context API来实现跨组件的状态共享。React的状态管理是组件交互的核心&#xff0c;而Context API则为全局状态的共享提供了一个简洁而强大的解决方案。 1. React 中的状态管理 Re…

在Ubuntu 16.04上安装MongoDB的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 MongoDB 是一款常用于现代 Web 应用程序的免费开源 NoSQL 文档数据库。本教程将帮助您在服务器上为生产应用程序环境设置 MongoDB…

Python画笔案例-023 绘制一朵小花

1、绘制一朵小花 通过 python 的turtle 库绘制一朵小花的图案&#xff0c;如下图&#xff1a; 2、实现代码 绘制一朵小花&#xff0c;以下为实现代码&#xff1a; """一朵小花.py """ import turtle as t # 导入海龟模块做为tt.bgcolor…