• Linux netstat命令详解


    一、netstat命令介绍

      Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输入netstat命令之后,会出现如下内容:

    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
    tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
    tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
    tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
    tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE
     
    Active UNIX domain sockets (w/o servers)
    Proto RefCnt Flags Type State I-Node Path
    unix 1 [ ] STREAM CONNECTED 16178 @000000dd
    unix 1 [ ] STREAM CONNECTED 16176 @000000dc
    unix 9 [ ] DGRAM 5292 /dev/log
    unix 1 [ ] STREAM CONNECTED 16182 @000000df
    ......

      从整体上看,netstat命令的输出结果可以分为两个部分:一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列。这些数字一般都应该是0,如果不是0则表示软件包正在队列中堆积,这种情况只会在非常少的情况见到。另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。Proto表示连接使用的协议,RefCnt表示连接到该套接口上的进程号,Type表示套接口的类型,State表示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

    二、netstat常用参数

      netstat命令常用的选项参数如下表所示:

    选项 功能
    -a (all)显示所有选项,默认不显示LISTEN相关
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名(不进行DNS解析),能显示IP的全部转化成IP
    -l 仅列出有在 Listen (监听) 的服务状态
    -p 显示进程标识符和进程名称
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计

    提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

    三、netstat命令使用实例

    【例1】列出所有端口(包括正在监听和未监听的)

    [root@Gin scripts]# netstat -a | less -N
          1 Active Internet connections (servers and established)
          2 Proto Recv-Q Send-Q Local Address           Foreign Address         State
          3 tcp        0      0 0.0.0.0:8223            0.0.0.0:*               LISTEN
          4 tcp        0      0 0.0.0.0:29503           0.0.0.0:*               LISTEN
          5 tcp        0      0 localhost:1988          0.0.0.0:*               LISTEN
          6 tcp        0      0 n227-080-096.byted:8648 0.0.0.0:*               LISTEN
          7 tcp        0      0 n227-080-096.byted:8649 0.0.0.0:*               LISTEN
          8 tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN
          9 tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
         10 tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
         11 tcp        0      1 n227-080-096.byte:42246 n12-058-225.byted.:3379 SYN_SENT
         12 tcp        0      0 n227-080-096.byte:18484 n227-080-096.byted:2280 TIME_WAIT
         13 tcp        0      0 n227-080-096.byte:18666 n227-080-096.byted:2280 TIME_WAIT
         14 tcp        0      0 n227-080-096.byte:14324 n8-006-208.byted.o:http ESTABLISHED
    ......

    less命令可以分页显示,-N参数可以列出行号

    【例2】列出所有TCP端口

    [root@Gin scripts]# netstat -at | less
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State     
    tcp        0      0 *:ssh                       *:*                         LISTEN     
    tcp        0     96 Gin:ssh                     192.168.17.1:60480          ESTABLISHED
    tcp        0      0 *:ssh                       *:*                         LISTEN     
    tcp        0      0 *:mysql                     *:*                         LISTEN
    ......

    如果需要列出所有UDP端口,则netstat -au

    【例3】列出只在监听的端口

    [root@Gin scripts]# netstat -l
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State     
    tcp        0      0 *:ssh                       *:*                         LISTEN     
    tcp        0      0 *:ssh                       *:*                         LISTEN     
    tcp        0      0 *:mysql                     *:*                         LISTEN     
    udp        0      0 *:bootpc                    *:*                                    
    Active UNIX domain sockets (only servers)
    Proto RefCnt Flags       Type       State         I-Node Path
    unix  2      [ ACC ]     STREAM     LISTENING     7132   @/com/ubuntu/upstart
    unix  2      [ ACC ]     STREAM     LISTENING     9569   /var/lib/mysql/mysql.sock
    ......

    【例4】列出所有监听TCP的端口

    ➜  test netstat -lt
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 0.0.0.0:8223            0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:29503           0.0.0.0:*               LISTEN
    tcp        0      0 localhost:1988          0.0.0.0:*               LISTEN
    tcp        0      0 n227-080-096.byted:8648 0.0.0.0:*               LISTEN
    tcp        0      0 n227-080-096.byted:8649 0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
    tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
    ......

    如果需要列出所有监听UDP的端口,则:netstat -lu

    【例5】在netstat的输出中显示 PID 和进程名称

      netstat -p 可以与其它开关一起使用,这样可以添加 “PID/进程名称” 到netstat的输出中,这样调试的时候可以很方便的发现特定端口运行的程序

    # netstat -pt
     Active Internet connections (w/o servers)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
     tcp        1      0 ramesh-laptop.loc:47212 192.168.185.75:www        CLOSE_WAIT  2109/firefox
     tcp        0      0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox

    例6】找出进程运行的端口

    并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。

    # netstat -ap | grep ssh
     tcp        1      0 dev-db:ssh           101.174.100.22:39213        CLOSE_WAIT  -
     tcp        1      0 dev-db:ssh           101.174.100.22:57643        CLOSE_WAIT  -

    例7】找出运行在指定端口的进程

    ➜  test netstat -an|grep 80
    tcp        0      0 10.227.80.96:8648       0.0.0.0:*               LISTEN
    tcp        0      0 10.227.80.96:8649       0.0.0.0:*               LISTEN
    tcp        0      0 10.227.80.96:34832      10.225.117.231:9370     ESTABLISHED
    tcp        0      0 10.227.80.96:35026      10.227.80.96:2280       TIME_WAIT
    tcp        0      0 10.227.80.96:16850      10.174.231.72:9427      TIME_WAIT
    tcp        0      0 127.0.0.1:30812         127.0.0.1:2280          ESTABLISHED
    tcp        0      0 10.227.80.96:43922      10.225.144.63:9436      ESTABLISHED
    tcp        0      0 10.227.80.96:100        10.154.16.17:4083       ESTABLISHED
    tcp        0      0 10.227.80.96:35160      10.227.80.96:2280       TIME_WAIT
    ......
  • 相关阅读:
    jQuery 2.0.3 源码分析 Deferred(最细的实现剖析,带图)
    jQuery 2.0.3 源码分析 Deferrred概念
    jQuery 2.0.3 源码分析core
    jQuery 2.0.3 源码分析core
    JavaScript异步机制
    使用Node.js实现数据推送
    自定义jQuery插件Step by Step
    转 CSS hack:针对IE6,IE7,firefox显示不同效果
    ie6,ie7兼容性总结(转)
    QQ浏览器X5内核问题汇总
  • 原文地址:https://www.cnblogs.com/baichunyu/p/15404405.html
Copyright © 2020-2023  润新知