2015-04-07 28 views
2

我有一个在端口4444上运行的小型Java ServerSocket应用程序。我想看看在我的OSX终端中使用该端口的进程,我的第一个想法是做如下:如何找到正在使用端口的java进程

netstat -a | grep 4444但是,这并没有给我任何结果。

lsof -i :4444,我得到以下(正确的)结果:

COMMAND PID  USER FD TYPE    DEVICE SIZE/OFF NODE NAME 
java 66389 admin 18u IPv6 0x1ae123a422ebe931  0t0 TCP *:krb524 (LISTEN) 

有人能告诉我为什么的netstat没有显示端口,但lsof的呢?

回答

2

Netstat可能会列出您的任务,但会使用别名'krb524'而不是端口号。这些别名列于/etc/services

$ grep 4444 /etc/services 
krb524   4444/udp # KRB524 
krb524   4444/tcp # KRB524 

要使用netstat查看端口号,请添加-n参数。

netstat -a -n | grep 4444 
+0

有趣的 - 你知道它为什么使用别名吗? – jcm

+0

我无法进入netstat作者的头脑,但我认为人们会喜欢用漂亮的字符串描述来代替数字运行的东西。 http://tldp.org/LDP/nag2/x-087-2-iface.netstat.html自从发明netstat以来,出现了一些“众所周知”的服务,所以开发人员很难选择一个尚未在'/ etc/services'中注册的端口,使得这个符号显示的效果不如以前那么有用。 – ericzundel

相关问题