int port = 80;
Process p = Runtime.getRuntime().exec("lsof -i :" + port + " | awk '{print $1}'");
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((s = reader.readLine()) != null) {
System.out.println(s);
}
请注意,如果希望基于进程id(PID)获取进程名称,可以使用以下选项:
Process p = Runtime.getRuntime().exec("ps -ef | awk '{if($2==\"" + pid + "\") print $8}'");
# 1 楼答案
文件系统有帮助
/proc/$PID/exe
是指向与进程ID对应的可执行文件的符号链接。显然,您只需从Java读取该文件即可编辑:以前,你要求“进程ID”,现在是关于TCP/IP端口。。。这使我的回答毫无用处
# 2 楼答案
如果要列出侦听某个端口的应用程序,可以将unix命令
lsof
与awk
结合使用:这将列出您,即侦听端口80的进程中的commandname
在Java代码中,您可以编写以下代码:
请注意,如果希望基于进程id(PID)获取进程名称,可以使用以下选项: