Linux netstat命令 可以查看网络的连接状态信息,我们用于查看应用程序的端口连接信息。

命令格式

netstat [选项]
其中选项可以缺省,相关选项如下:

netstat 命令参数说明
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n拒绝显示别名,能显示数字的全部转化成数字。
-l
仅列出有在 Listen (监听) 的服務状态


-p
显示建立相关链接的程序名
-r
显示路由信息,路由表
-e
显示扩展信息,例如uid等
-s按各个协议进行统计
-c每隔一个固定时间,执行该netstat命令。

返回字段的含义

通过netstat命令我们可以看到返回结果中有些参数需要我们了解的,如下:

Linux netstat 命令

  • Proto:代表协议(tcp、tcp6、udp、udp6)
  • Recv-Q:数据已经在本地接收缓冲,但是还没有recv()
  • Send-Q:对方没有收到的数据或者说没有Ack的,还是本地缓冲区
  • Local Address: 本地IP:本地端口
  • Foreign Address: 远程IP:远程端口
  • State:链接状态(监听状态:LISTEN、建立连接状态:ESTABLISHED等)
  • PID:进程PID号
  • Program name:程序名字

例子

1. 通过进程id查看应用程序的端口占用情况

[root@localhost ~]# netstat -anp|grep 17830
tcp6       0      0 :::8081                 :::*                    LISTEN      17830/java          
tcp6       0      0 192.168.8.199:59334     192.168.8.15:1521      ESTABLISHED 17830/java          
tcp6       0      0 127.0.0.1:43988         127.0.0.1:3306          ESTABLISHED 17830/java          
tcp6       0      0 192.168.8.199:48412     192.168.8.134:1433     ESTABLISHED 17830/java          
unix  2      [ ]         STREAM     CONNECTED     45022028 17830/java           
unix  2      [ ]         STREAM     CONNECTED     45018064 17830/java 

其中17830是进程ID,

我们可以看到这个java应用的程序所在的ip地址为192.168.8.199,监听端口8081,它连接了3个服务,根据端口号我们可以知道。

127.0.0.1:3306,显然是本地mysql数据库

192.168.8.15:1521,显然是ip地址为192.168.8.15的oracle数据库

192.168.8.134:1433,显然是sqlserver的数据库。

以上,看来netstat 命令可以更好的查看应用程序的连接异常问题。

2. 查看某个端口的网络连接

[root@localhost ~]# netstat -anp|grep 8081
tcp6       0      0 :::8081                 :::*                    LISTEN      17830/java          
tcp6       0      0 192.168.8.199:8081      192.168.8.131:39125     TIME_WAIT   -                   
tcp6       0      0 192.168.8.199:8081      192.168.8.131:39124     TIME_WAIT   -                   
tcp6       0      0 192.168.8.199:8081      192.168.8.131:39123     TIME_WAIT   -                   
tcp6       0      0 192.168.8.199:8081      192.168.8.131:39117     TIME_WAIT   -                   
unix  3      [ ]         STREAM     CONNECTED     80814    780/dbus-daemon      /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     80813    1213/gdm 
这里查询端口8081与之连接的服务器为192.168.8.131。