Linux netstat:查看网络状态

netstat 主要用于网络监控,在进程管理方面也很重要。
它的输出分为两大部分,分别是网络和系统自己的进程相关性部分。

语法

netstat [-atunlp]

参数

  • -a 列出目前系统上所有的连接、监听、Socket数据;
  • -t 列出TCP网络数据包的数据;
  • -u 列出UDP网络数据包的数据;
  • -n 不列出进程的服务名称,以端口号来代替
  • -l 列出目前正在网络监听的服务
  • -p 列出该网络服务的进程 PID

范例一

netstat

输出:

Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0     36 iz2zeb0rftmzvuq8o8d:ssh 13.13.206.183.stat:4605 ESTABLISHED
tcp        0      0 iz2zeb0rftmzvuq8o:36836 100.100.30.25:http      ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ]         DGRAM                    9799     /run/systemd/shutdownd
unix  2      [ ]         DGRAM                    6873     /run/systemd/notify
unix  2      [ ]         DGRAM                    6875     /run/systemd/cgroups-agent
unix  5      [ ]         DGRAM                    6895     /run/systemd/journal/socket
unix  9      [ ]         DGRAM                    6897     /dev/log
unix  3      [ ]         STREAM     CONNECTED     11580    /var/run/dbus/system_bus_socket

上面的结果中,显示了两个部分,分别是网络连接以及系统上的socket程序相关性部分。
先看网络连接部分:

  • Proto: 网络的数据包协议,主要分为TCP和UDP
  • Recv-Q:非由用户进程连接到此socket的复制的总字节数
  • Send-Q:非由远程主机传送过来的 acknowledged 总字节数
  • LocalAddress: 本地IP端口情况
  • ForeignAddress:远程主机的IP端口情况
  • State:连接状态,主要有建立(ESTABLISHED)及监听(LISTEN)

除了网络连接之外,Linux系统上的进程是可以接收不同进程发送过来的信息,那就是scoket file。scoket file可以沟通两个进程之间的信息。上面的socket file的输出字段主要有:

  • Proto: 一般就是Unix
  • RefCnt:连接到此socket的进程数量
  • Flags:连接的标识
  • Type:socket访问的类型,主要有确认连接的STREAM和不需确认的DGRAM两种。
  • State:若为CONNECTED 表示多个进程之间已经连接建立。
  • Path:连接到此socket的相关程序的路径,或者相关数据输出的路径。

范例二

找出目前系统上已在监听的网络连接以及PID

netstat -tlnp

范例三

查看某个端口的占用情况

netstat -tunlp|grep 端口号
原文地址:https://www.cnblogs.com/jiaoran/p/14522221.html