有哪些做的好的汽配零配件网站,免费申请商家收款码,免费logo在线设计生成,江苏网站建设费用在 Linux 环境中#xff0c;有时我们需要查找正在运行的 Java 进程以及它们对应的 .jar 文件位置。本文将介绍如何使用命令行工具来实现这一目标。 前言
在 Linux 系统中#xff0c;我们经常需要监控正在运行的应用程序#xff0c;特别是在出现问题时#xff0c;了解应用程…在 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.encodingutf-8 -jar qiein-purchase-0.0.1-SNAPSHOT-exec.jar --spring.profiles.activelocal
root 3041 0.0 5.2 3128280 424212 ? Sl Aug16 10:16 java -Dfile.encodingutf-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.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse -jar inwuoo-pay-0.0.1-SNAPSHOT.jar
root 3552 0.0 0.0 112644 968 pts/0 S 15:20 0:00 grep --colorauto 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.encodingutf-8 -jar qiein-purchase-0.0.1-SNAPSHOT-exec.jar --spring.profiles.activelocal
root 3041 0.0 5.2 3128280 424212 ? Sl Aug16 10:16 java -Dfile.encodingutf-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.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse -jar inwuoo-pay-0.0.1-SNAPSHOT.jar
root 3552 0.0 0.0 112644 968 pts/0 S 15:20 0:00 grep --colorauto javaps 命令输出列详解 ps 命令输出列提供了关于进程的重要信息。以下是各个列的含义
USER: 含义: 进程的所有者用户名。用途: 显示哪个用户拥有该进程。 PID: 含义: 进程 ID。用途: 用于唯一标识一个进程。 %CPU: 含义: 进程占用的 CPU 百分比。 用途: 显示进程当前使用的 CPU 资源比例。%MEM: 含义: 进程占用的物理内存百分比。用途: 显示进程当前使用的物理内存资源比例。 VSZ: 含义: 进程使用的虚拟内存大小单位通常是字节。用途: 显示进程虚拟内存的总大小。 RSS: 含义: 进程使用的常驻集大小单位通常是字节。用途: 显示进程实际使用的物理内存大小。 TTY: 含义: 终端设备标识符。用途: 显示进程与哪个终端设备关联。 STAT: 含义: 进程状态。用途: 显示进程的状态如运行中R、睡眠S、停止T等。 START: 含义: 进程启动的时间。用途: 显示进程开始运行的时间点。 TIME: 含义: 进程累计运行时间。用途: 显示进程自启动以来累计使用 CPU 的时间。 COMMAND: 含义: 进程执行的命令。用途: 显示启动进程时使用的命令行参数。 查看该进程的详细命令行参数
在列出的进程中找到您感兴趣的 Java 进程并注意它的进程 IDPID。然后使用 ps 命令加上 -p 和 -o 参数来查看该进程的详细命令行参数
ps -p PID -o args示例
java -Dfile.encodingutf-8 -jar xx.jar --spring.profiles.activeprod查找 .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 文件位置。这对于诊断和管理应用程序非常有用。希望这篇文章对您有所帮助