A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
network statistics
是一个命令行工具,它显示网络连接(传入和传出),路由表和许多网络接口(网络接口控制器或软件定义的网络接口)和网络协议统计信息。 它可以在类 Unix 操作系统上使用,包括 OS X、Linux、Solaris 和 BSD,以及基于 Windows NT 的操作系统,包括 Windows XP、Windows Vista、Windows 7/8/10。
-bash: netstat: command not found #Debian apt-get install net-tools #Ubuntu apt-get install net-tools #Alpine apk add net-tools #Arch Linux pacman -S net-tools #Kali Linux apt-get install net-tools #CentOS yum install net-tools #Fedora dnf install net-tools #Raspbian apt-get install net-tools #Docker docker run cmd.cat/netstat netstat
netstat 命令它用于查找网络中的问题并确定网络上的流量作为性能度量。用来打印 Linux 中网络系统的状态信息,可让你得知整个 Linux 系统的网络情况。
netstat [address_family_options] [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--symbolic|-N] [--extend|-e[--extend|-e]] [--timers|-o] [--program|-p] [--verbose|-v] [--continuous|-c] netstat {--route|-r} [address_family_options] [--extend|-e[--extend|-e]] [--verbose|-v] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c] netstat {--interfaces|-i} [--all|-a] [--extend|-e[--extend|-e]] [--verbose|-v] [--program|-p] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c] netstat {--groups|-g} [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c] netstat {--masquerade|-M} [--extend|-e] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c] netstat {--statistics|-s} [--tcp|-t] [--udp|-u] [--raw|-w] netstat {--version|-V} netstat {--help|-h}
在上面的语法中,address_family_options
可以是以下选项的任意组合:
[-4] [-6] [--protocol={inet,unix,ipx,ax25,netrom,ddp}[,...]] [--unix|-x] [--inet|--ip] [--ax25] [--ipx] [--netrom] [--ddp]
-a或--all:显示所有连线中的Socket; -A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址; -c或--continuous:持续列出网络状态; -C或--cache:显示路由器配置的快取信息; -e或--extend:显示网络其他相关信息; -F或--fib:显示FIB; -g或--groups:显示多重广播功能群组组员名单; -h或--help:在线帮助; -i或--interfaces:显示网络界面信息表单; -l或--listening:显示监控中的服务器的Socket; -M或--masquerade:显示伪装的网络连线; -n或--numeric:直接使用ip地址,而不通过域名服务器; -N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称; -o或--timers:显示计时器; -p或--programs:显示正在使用Socket的程序识别码和程序名称; -r或--route:显示Routing Table; -s或--statistice:显示网络工作信息统计表; -t或--tcp:显示TCP传输协议的连线状况; -u或--udp:显示UDP传输协议的连线状况; -v或--verbose:显示指令执行过程; -V或--version:显示版本信息; -w或--raw:显示RAW传输协议的连线状况; -x或--unix:此参数的效果和指定"-A unix"参数相同; --ip或--inet:此参数的效果和指定"-A inet"参数相同。
#netstat 列出所有端口 (包括监听和未监听的) netstat -a #列出所有端口 netstat -at #列出所有tcp端口 netstat -au #列出所有udp端口 #netstat 列出所有处于监听状态的 Sockets netstat -l #只显示监听端口 netstat -lt #只列出所有监听 tcp 端口 netstat -lu #只列出所有监听 udp 端口 netstat -lx #只列出所有监听 UNIX 端口 #netstat 显示每个协议的统计信息 netstat -s 显示所有端口的统计信息 netstat -st 显示TCP端口的统计信息 netstat -su 显示UDP端口的统计信息 netstat -pt
netstat -p 可以与其它开关一起使用,就可以添加 “PID/进程名称” 到 netstat 输出中,这样 debugging 的时候可以很方便的发现特定端口运行的程序。
在 netstat 输出中不显示主机,端口和用户名 (host, port or user),当你不想让主机,端口和用户名显示,使用 netstat -n
。将会使用数字代替那些名称。同样可以加速输出,因为不用进行比对查询。
netstat -an #如果只是不想让这三个名称中的一个被显示,使用以下命令: netstat -a --numeric-ports netstat -a --numeric-hosts netstat -a --numeric-users
持续输出 netstat 信息:
netstat -c #每隔一秒输出网络信息 netstat --verbose #显示系统不支持的地址族(Address Families),如: --------------- unix 2 [ ] DGRAM 14153 netstat: no support for `AF IPX' on this system. netstat: no support for `AF AX25' on this system. netstat: no support for `AF X25' on this system. netstat: no support for `AF NETROM' on this system.
/[正则表达式]/ #匹配文本样式,比如/SERVER/,从第一行到包含SERVER的匹配行。 {*} #表示根据匹配重复执行分割,直到文件尾停止,使用{整数}的形式指定分割执行的次数。 -s #静默模式,不打印其他信息。 -n #指定分割后的文件名后缀的数字个数。比如01、02、03等。 -f #指定分割后的文件名前缀。 -b #指定后缀格式。比如%02d.log,类似于C语言中的printf参数格式。 rm server00.log #是删除第一个文件,因为分割后的的第一个文件没有内容,匹配的单词就位于文件的第一行中。
netstat 显示核心路由信息
$ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default gateway 0.0.0.0 UG 0 0 0 eth0 169.254.169.0 gateway 255.255.255.0 UG 0 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 #使用 netstat -rn 显示数字格式,不查询主机名称。 $ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 169.254.169.0 192.168.1.1 255.255.255.0 UG 0 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
netstat 找出程序运行的端口
#netstat 并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。 (No info could be read for "-p": geteuid()=1004 but you should be root.) netstat -ap | grep ssh
netstat 找出运行在指定端口的进程:
netstat -an | grep ':80' #netstat 分组查看各种连接状态 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' LAST_ACK 15 (正在等待处理的请求数) SYN_RECV 3 ESTABLISHED 50 (正常数据传输状态) FIN_WAIT2 5 TIME_WAIT 3173 (处理完毕,等待超时结束的请求数) #netstat 收集有关端口 80 上活动连接数的统计信息,并将此数据传递给 wc 命令, #该命令通过计算原始 netstat 输出的行来显示连接数。 netstat -an |grep :80 | wc -l #netstat 通过端口找进程 ID netstat -anp|grep 8081 | grep LISTEN|awk '{printf $7}'|cut -d/ -f1
显示网络接口列表
netstat -i #netstat 显示详细信息 ifconfig 使用 netstat -ie
netstat 查看连接某服务端口最多的的 IP
地址:
netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr
netstat 查看 TCP 各种状态列表:
$ netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}' LAST_ACK 24 SYN_RECV 2 ESTABLISHED 59 FIN_WAIT1 7 FIN_WAIT2 13 TIME_WAIT 3292
netstat 查看 phpfpm
进程数,如果接近预设值,说明不够用,需要增加:
netstat -anpo | grep "php-fpm" | wc -l