【发布时间】:2015-05-29 10:59:46
【问题描述】:
如何在 Linux 中找到进程的端口?
我试过了:
netstat -a -p | grep'processID'
但如果进程没有运行,则没有进程 ID,在这种情况下我无法获取端口。
我没有在任何服务器上运行该进程,只是一个运行我的 Java 进程的 JVM 实例。
如果端口正在运行,有没有办法找到它,或者它会在任何文件中定义然后如何搜索?
【问题讨论】:
如何在 Linux 中找到进程的端口?
我试过了:
netstat -a -p | grep'processID'
但如果进程没有运行,则没有进程 ID,在这种情况下我无法获取端口。
我没有在任何服务器上运行该进程,只是一个运行我的 Java 进程的 JVM 实例。
如果端口正在运行,有没有办法找到它,或者它会在任何文件中定义然后如何搜索?
【问题讨论】:
如果一个进程没有运行,它没有任何打开的套接字,所以它没有任何端口。
如果您的进程有一个配置文件,它使用的端口可能在该文件中定义。但话又说回来,它们可能不会——某些服务器可能使用预定义的端口(例如,用于 Web 服务器的端口 80)。
长话短说,否,您通常无法确定一个不存在的进程在运行时会使用哪些端口。
【讨论】:
如果该进程侦听端口,您可以找到该进程的端口。如果进程停止,如果它正在使用一个端口,我们将无法知道它正在使用哪个端口。 假设你正在寻找一个正在运行的 java 进程,你可以这样做
从以下位置识别 PID:
netstat -nap | grep java
[root@portalserv02 ~]# netstat -nap | grep java | less
tcp 0 0 :::36695 :::* LISTEN 5393/java
tcp 0 0 :::21080 :::* LISTEN 5394/java
使用以下命令识别应用程序
lsof -p 5393 | grep cwd 和
lsof -p 5394 | grep cwd
【讨论】: