Linux 查看Java进程属于哪个服务

1. 整体流程表格

步骤 操作 命令/代码 说明
1 查看进程ID ps -ef | grep java 使用ps命令查找Java进程ID
2 查看进程的启动命令 cat /proc/{PID}/cmdline 根据进程ID查看具体的启动命令
3 查看服务名 grep -o 'Dcatalina.base=[^ ]*' | sed 's/Dcatalina.base=//' 从启动命令中提取服务名

2. 操作步骤

步骤1:查看进程ID

首先,我们需要使用ps命令来查找Java进程的ID。打开终端,运行以下命令:

ps -ef | grep java

这个命令会列出所有与Java相关的进程。其中,-ef选项表示列出所有进程的详细信息,grep java表示只显示包含"java"关键字的行。

步骤2:查看进程的启动命令

找到Java进程的ID后,我们需要查看该进程的启动命令。每个进程在Linux系统中都有一个特定的目录,该目录的名称是进程ID。我们可以使用cat命令来查看该目录下的cmdline文件,其中记录了进程的启动命令。

cat /proc/{PID}/cmdline

将上述命令中的{PID}替换为步骤1中找到的Java进程ID。执行该命令后,会输出Java进程的启动命令。

步骤3:查看服务名

通过查看进程的启动命令,我们可以获取到Java进程所属的服务名。在启动命令中通常会包含一些特定的参数来标识所属的服务。我们可以使用grep命令和sed命令来提取服务名。

grep -o 'Dcatalina.base=[^ ]*' | sed 's/Dcatalina.base=//'

这个命令中,grep -o 'Dcatalina.base=[^ ]*' 的意思是从启动命令中提取以Dcatalina.base=开头并且不包含空格的字符串,sed 's/Dcatalina.base=//' 的意思是将提取到的字符串中的Dcatalina.base=替换为空字符串,从而得到服务名。

3. 示例

假设我们找到的Java进程ID为12345,通过以下示例来演示如何查看Java进程所属的服务名。

步骤1:查看进程ID

运行命令:

ps -ef | grep java

得到以下输出:

user  1000 12345  0 10:00 ? 00:00:00 java -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/tomcat/endorsed -classpath /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start

可以看到第一列是用户名,第二列是进程ID。

步骤2:查看进程的启动命令

运行命令:

cat /proc/12345/cmdline

得到以下输出:

java-Dcatalina.base=/opt/tomcat-Dcatalina.home=/opt/tomcat-Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.endorsed.dirs=/opt/tomcat/endorsed-classpath/opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar-Dcatalina.base=/opt/tomcat-Dcatalina.home=/opt/tomcat-Djava.io.tmpdir=/opt/tomcat