Linux查看Java进程端口号

在Linux系统中,我们经常需要查看某个进程的端口号,以便进行网络调试或者监控。对于Java进程来说,我们可以通过一些命令或者工具来实现这个目的。

本篇文章将介绍几种常用的方法来查看Java进程的端口号,并提供相应的代码示例。

方法一:使用lsof命令

lsof(List Open Files)是一个用于显示当前系统打开文件的工具,也可以用来查看进程所使用的端口号。

通过以下命令可以查看指定进程的端口号:

$ lsof -i :<port>

其中,<port>是要查看的端口号。例如,要查看Java进程的端口号为8080的情况,可以运行以下命令:

$ lsof -i :8080

以下是一个示例代码,在Java中使用Runtime.getRuntime().exec()方法执行上述命令并获取输出结果:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {
        try {
            String port = "8080";
            Process process = Runtime.getRuntime().exec("lsof -i :" + port);
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            process.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

方法二:使用netstat命令

netstat是一个用于显示网络连接、路由表和网络接口信息的工具,我们可以使用它来查看指定端口号的进程。

可以通过以下命令来查看指定进程的端口号:

$ netstat -tunlp | grep <port>

其中,<port>是要查看的端口号。例如,要查看Java进程的端口号为8080的情况,可以运行以下命令:

$ netstat -tunlp | grep 8080

以下是一个示例代码,在Java中使用Runtime.getRuntime().exec()方法执行上述命令并获取输出结果:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {
        try {
            String port = "8080";
            Process process = Runtime.getRuntime().exec("netstat -tunlp | grep " + port);
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            process.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

方法三:使用jps命令

jps(Java Virtual Machine Process Status Tool)是JDK自带的一个工具,用于查看Java进程的状态。

可以通过以下命令来查看Java进程的端口号:

$ jps -lvm | grep <process_name>

其中,<process_name>是要查看的Java进程的名称。例如,要查看名称为ExampleApp的Java进程的端口号,可以运行以下命令:

$ jps -lvm | grep ExampleApp

以下是一个示例代码,在Java中使用Runtime.getRuntime().exec()方法执行上述命令并获取输出结果:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {
        try {
            String processName = "ExampleApp";
            Process process = Runtime.getRuntime().exec("jps -lvm | grep " + processName);
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            process.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

总结

本文介绍了三种常用的方法来查看Java进程的端口号:使用lsof命令、使用netstat命令和使用jps命令。对于每一种方法,我们都提供了相应的代码示例,以供读者参考和使用。

在实际使用过程中,可以根据具体的需求选择最合适的方法来查看Java进程的端口号。希望本文能对您有所帮助!