首页 > Uncategorized > netstat显示program name

netstat显示program name

  • 本文链接地址:http://zhubaining.com/blog/2010/01/24/archives/netstat%e6%98%be%e7%a4%baprogram-name
  • 作者:zhubaining

$ netstat -anp
tcp        0      0 0.0.0.0:513                 0.0.0.0:*                   LISTEN      -                  
tcp        0      0 0.0.0.0:514                 0.0.0.0:*                   LISTEN      -                  

显示不了PID/Program name?因为这是人家的进程,你当然看不了了。
来su成root,果然能看到了:
# netstat
tcp        0      0 0.0.0.0:513                 0.0.0.0:*                   LISTEN      2571/xinetd        
tcp        0      0 0.0.0.0:514                 0.0.0.0:*                   LISTEN      2571/xinetd

有时候使用root也看不到PID/Program name,这是咋回事?比如:
# netstat
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      -

原来是netstat不够健壮,当socket inode太大的时候就工作不正常了(http://www.makeinstall.cn/index.php/archives/156)。
解决办法:
1. 重启一下服务器,再启动相关服务,就能看到了――这招没有意义
2. 修改netstat源码,去除对socket inode最大值判断的限制;
3. 使用lsof命令来查看监听在某个端口的进程,如: $ /usr/sbin/lsof -i :端口号

那试一下第三招,果然疗效不错:
# /usr/sbin/lsof -i :80
COMMAND   PID   USER   FD   TYPE     DEVICE SIZE NODE NAME
httpd     960 apache    3u  IPv4 3240233587       TCP *:http (LISTEN)
httpd    4159 apache    3u  IPv4 3240233587       TCP *:http (LISTEN)

分类: Uncategorized 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.