Linux的netstat命令常用实例

文章类别 in linux

netstat命令是用来显示网络连接,运行端口,和路由表等所有网络套接字连接情况,可以查看监听状态,比如你开了tomcat的后你可以看看8080端口有没打开,在哪里被使用到,这都可以用强大netstat命令来查看使用。

netstat的使用

netstat [选项]

具体选项可以用netstat -h 查看:

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

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

在这里列举netstat常用的使用实例: ##显示当前系统的所有有效的TCP连接:

[[email protected] ~]# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN     
tcp        0      0 192.168.22.212:42866    45.59.77.61:3306        TIME_WAIT  
tcp        0     96 192.168.22.212:22       116.22.163.220:4442   ESTABLISHED
tcp        0      0 192.168.22.212:42862    45.59.77.61:3306        TIME_WAIT  
tcp        0      0 192.168.22.212:37974    100.100.25.3:80       ESTABLISHED
tcp      401      0 192.168.22.212:36626    106.11.68.13:80        CLOSE_WAIT 
tcp        0      0 192.168.22.212:42868    45.59.77.61:3306      ESTABLISHED
tcp        0      0 192.168.22.212:42864    45.59.77.61:3306        TIME_WAIT  
tcp      401      0 192.168.22.212:32908    106.11.68.13:80        CLOSE_WAIT 
tcp6       0      0 :::3306                 :::*                    LISTEN     
tcp6       0      0 192.168.22.212:3306     116.22.163.220:3187   ESTABLISHED
tcp6       0      0 192.168.22.212:3306     45.59.77.61:42868     ESTABLISHED
tcp6       0      0 192.168.22.212:3306     116.22.163.220:4676   ESTABLISHED
tcp6       0      0 192.168.22.212:3306     116.22.163.220:3371   ESTABLISHED
tcp6       0      0 192.168.22.212:3306     116.22.163.220:4992   ESTABLISHED
tcp6       0      0 192.168.22.212:3306     116.22.163.220:4767   ESTABLISHED
tcp6       0      0 192.168.22.212:3306     116.22.163.220:4680   ESTABLISHED

对以上的输出信息进行解释:

  • Proto 就是连接协议的种类,主要有tcp和udp。可以看到我们这里的连接协议类型是tcp。
  • Recv-Q 接收队列
  • Send-Q 发送队列(由远端主机发送过来的字节数)
  • Local Address 本地ip地址
  • Foreign Address 远端主机ip地址
  • State 显示状态 有以下几种
    • LISTEN 服务监听
    • TIME_WAIT 连接已经中断,但是套接字还在等待结束中
    • ESTABLISHED 连接成功
    • CLOSE_WAIT 被动关闭

显示已经开启的网络连接和对应的端口

[[email protected] ~]# netstat -tlnpu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      16823/java          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2385/sshd           
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN      16823/java          
tcp        0      0 0.0.0.0:8009            0.0.0.0:*               LISTEN      16823/java          
tcp6       0      0 :::3306                 :::*                    LISTEN      3728/mysqld         
udp        0      0 172.26.209.127:123      0.0.0.0:*                           886/ntpd            
udp        0      0 127.0.0.1:123           0.0.0.0:*                           886/ntpd            
udp        0      0 0.0.0.0:123             0.0.0.0:*                           886/ntpd            
udp6       0      0 :::123                  :::*                                886/ntpd    

可以看到开放了80,22,8009,123端口,可以看到端口对应的进程PID和名字,这样子我们就可以对应进行处理了。