netstat命令
netstat 打印网络连接、路由表、接口统计信息、伪装连接和多播成员身份
注释
代替netstat的命令 ss
代替netstat -r 显示路由信息的命令 ip route
netstat -i 显示网络界面信息表单的命令 ip -s link
netstat -g 显示多重广播功能群组组员名单的命令 ip maddr
说明
netstat打印有关linux网络子系统的信息。打印的信息类型由第一个参数控制。
none:没有参数,默认情况下,netstat显示打开的套接字的列表。如果未指定任何地址族,则将打印所有配置的地址族的活动套接字。
-r:显示内核路由器表。 netstat -r 和route -e产生相同的输出。
-g:显示IPv4和ipv6的多播组成员身份信息。
-i:显示所有网络接口或指定的iface的表。
-M:显示伪装连接的列表。
-s:显示每个协议的摘要统计信息
参数
-v 用冗长的语言告诉用户发生了什么。尤其是打印一些有关未配置地址族的有用信息。
-W 不要使用所需宽度的输出截断IP地址。
-n 显示数值地址,而不是尝试确定符号主机名、端口号和用户名
--numeric-hosts 显示数字主机地址,但不影响端口或用户名的分辨率
--numeric-ports 显示数字端口号,但不影响主机名或用户名的分辨率
--numeric-users 显示数字用户ID,但不能影响主机名或端口名的分辨率
-A 指定要为其显示连接的地址系列
-c 这将导致netstat每秒连续打印所选信息
-e 显示其他信息。使用此选项两次可获得最大细节
-o 包括与网络计时器相关的信息
-p显示每个套接字所属程序的PID和名称。
-l 只显示侦听套接字
-a 显示侦听和非侦听套接字。使用--interfaces选项,显示未启动的接口。
-F 从FIB打印路由信息
-C 从路由缓存打印路由信息
[root@keepalived ~]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 48 keepalived:ssh 10.0.0.1:65423 ESTABLISHED
tcp 0 0 keepalived:ssh 10.0.0.1:65424 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 34101 /var/run/chrony/chronyd.sock
unix 3 [ ] DGRAM 7811 /run/systemd/notify
注释
Active Internet connections (w/o servers) 网络活动连接信息(有源TCP连接)
Active UNIX domain sockets (w/o servers) 活动UNIX域套接字 称为有UNIX域套接口,和网络套接字一样,但是只用于本机通信,性能可以提高一倍。
Proto 套接字使用的协议 (套接字协议为:tcp udp updlite raw )
Recv-Q 接收队列
Send-Q 发送队列
(一般都是0,如果不是则表示软件包正在队列中堆积。)
Local Address 套接字本地端的地址和端口号
Foreign Address 套接字远程端的地址和端口号
RefCnt 表示连接到本套接口上的进程号
Flags 标志
Type 显示套接口的类型
State 显示套接口当前的状态 (raw模式下没有状态,而且UDP和UDPLite中通常也没有使用状态)
Path 表示连接到套接口的其他进程使用的路径名
连接状态信息
ESTABLISHED 套接字已建立连接
SYN_SENT 套接字正在积极尝试建立连接。
SYN_RECV 已从网络收到连接请求。
FIN_WAIT1 套接字已关闭,连接正在关闭。
FIN_WAIT2 连接已关闭,套接字正在等待远程端的关闭。
TIME_WAIT 套接字在关闭后正在等待以处理仍在网络中的数据包。
CLOSE 套接字未被使用。
CLOSE_WAIT 远程端已关闭,正在等待套接字关闭。
LAST_ACK 远程端已关闭,套接字已关闭。等待确认。
LISTEN 正在监听传入的套接字连接
CLOSING 两个套接字都关闭了,但仍然没有发送所有的数据。
输出信息
User 套接字所有者的用户名或用户id(UID)
PID/Program name PID/程序名称
Timer 定时器
Active UNIX domain Sockets 活动的UNIX域套接字
Proto 协议 ;unix协议(通常由unix使用)
RefCnt 引用计数 (即通过此套接字附加的进程数)
Flags 标志
Type 套接字访问类型
State 显示套接口当前的状态
Path 表示连接到套接口的其他进程使用的路径名
Active IPX sockets 有源IPX插座
Active NET/ROM sockets 活动网络/ROM插槽
套接字访问类型
DGRAM 套接字在数据报(无连接)模式下使用。
STREAM 这是一个流(连接)套接字。
RAW 该套接字用作原始套接字。
RDM 这个服务器提供可靠的消息传递。
SEQPACKET 这是一个顺序分组套接字。
PACKET 原始接口访问套接字。
套接口的状态
FREE 未分配套接字
LISTENING 套接字正在侦听连接请求
CONNECTING 套接字即将建立连接
CONNECTED 套接字已连接。
DISCONNECTING 套接字已经断开连接
empty 套接字未连接到另一个网络
文件
/etc/services 服务翻译文件
/proc roc文件系统的装入点,它允许通过以下文件访问内核状态信息。
/proc/net/dev 设备信息
/proc/net/raw 原始套接字信息
/proc/net/tcp TCP套接字信息
/proc/net/udp UDP套接字信息
/proc/net/udplite UDPLite套接字信息
/proc/net/igmp IGMP多播信息
/proc/net/unix Unix域套接字信息
/proc/net/ipx IPX套接字信息
/proc/net/ax25 AX25插槽信息
/proc/net/appletalk DDP(appletalk)套接字信息
/proc/net/nr NET/ROM插槽信息
/proc/net/route IP路由信息
/proc/net/ax25_route AX25路由信息
/proc/net/ipx_route IPX路由信息
/proc/net/nr_nodes 网络/只读存储器节点列表
/proc/net/nr_neigh NET/ROM邻居
/proc/net/ip_masquerade 伪装连接
/proc/net/snmp 统计学
实例
显示所有端口
[root@keepalived ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp 0 48 keepalived:ssh 10.0.0.1:65423 ESTABLISHED
tcp 0 0 keepalived:ssh 10.0.0.1:65424 ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost:smtp [::]:* LISTEN
udp 0 0 localhost:323 0.0.0.0:*
udp6 0 0 localhost:323 [::]:*
raw6 0 0 [::]:ipv6-icmp [::]:* 7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 33542 /run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 37617 private/tlsmgr
unix 2 [ ACC ] STREAM LISTENING 37620 private/rewrite
显示所有TCP端口
[root@keepalived ~]# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp 0 48 keepalived:ssh 10.0.0.1:65423 ESTABLISHED
tcp 0 0 keepalived:ssh 10.0.0.1:65424 ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost:smtp [::]:* LISTEN
显示所有处于监听的sockets
netstat -lt #只列出所有监听 tcp 端口
netstat -lu #只列出所有监听 udp 端口
netstat -lx #只列出所有监听 UNIX 端口
[root@keepalived ~]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost:smtp [::]:* LISTEN
udp 0 0 localhost:323 0.0.0.0:*
udp6 0 0 localhost:323 [::]:*
raw6 0 0 [::]:ipv6-icmp [::]:* 7
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 33542 /run/dbus/system_bus_socket
显示每个协议的统计信息
netstat -st 显示TCP端口的统计信息
netstat -su 显示UDP端口的统计信息
[root@keepalived ~]# netstat -s
Ip:
646619 total packets received
0 forwarded
0 incoming packets discarded
646619 incoming packets delivered
1199898 requests sent out
7 outgoing packets dropped
Icmp:
16 ICMP messages received
0 input ICMP message failed.
ICMP input histogram:
显示网络接口列表(类似ifconfig)
[root@keepalived ~]# netstat -ie
Kernel Interface table
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.10 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::c1d5:518e:a6ee:2b90 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:4e:ce:fe txqueuelen 1000 (Ethernet)
RX packets 655196 bytes 46945831 (44.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1206029 bytes 137384776 (131.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
性能调优实例
查看phpcgi进程数,如果接近预设值,说明不够用,需要增加:
netstat -anpo | grep "php-cgi" | wc -l