您的位置:首页 > 理论基础 > 计算机网络

Linux网络监控命令——netstat

2018-02-02 15:52 561 查看

命令名称

netstat:打印网络连接、路由表、接口状态、伪链接、多播组。

概要

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]] [–ver‐bose|-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]

参数可选项

netstat用于打印显示Linux的网络系统信息。打印的信息种类由如下所示的第一个参数来决定:

(无参数)

默认状态,netstat显示已打开的sockets列表。如果没有指定任何的地址簇,那么将会打印显示所有已配置的地址簇的活跃sockets。

–route,-r

显示内核路由表。netstat -r 和route -e 具有相同的输出。

–groups,-g

显示IPv4和IPv6的多播组信息。

–interfaces,-i

显示网络接口的信息表单。

–masquerade,-M

显示伪链接列表。

–statistics,-s

显示每个协议的统计。

–verbose,-v

告诉用户指令执行的过程。特别是打印未配置的协议簇的一些有用信息。

–wide,-w

不要通过使用尽可能宽的输出带宽截断IP地址。不打断已有脚本是可选的。

–numeric,-n

显示数字格式的地址,而不是字符形式的主机、端口号、用户名。

–numeric-hosts

以数字格式显示主机,不影响端口号和用户名的显示。

–numeric-ports

以数字格式显示端口号,不影响主机和用户名的显示。

–numeric-users

以数字格式显示用户名,不影响主机和端口号的显示。

–protocol=family , -A

指定要显示的连接的地址簇。family采用逗号(,)来分隔地址簇清单中的inet、unix、ipx、ax25、netrom 和ddp等关键字。这和使用–unix、–inet、–unix (-x)、 –ipx、–ax25、–netrom、–ddp具有相同的效果。

–continuous,-c

这将会导致netstat每隔一段时间持续的打印显示已选择的信息。

–extend,-e

显示额外的信息。使用此命令两次可以显示最多的细节。

–timers,-o

包含与网络计时器有关的信息。

–program,-p

显示每一个socket所属的PID和程序名称。

–listening,-l

仅显示监听sockets。(默认情况下是忽略的)

–all,-a

同时显示监听和非监听即所有的sockets。

-F

显示FIB中的路由信息。

-C

显示路由配置中的cache信息。

实例

(1)列出所有端口(包括监听和未监听的)

netstat  -a    //列出所有端口
netstat  -at   //列出所有tcp端口
netstat  -au   //列出所有udp端口


(2)列出所有处于监听状态的sockets

netstat  -l    //只显示监听端口
netstat  -lt   //只列出所有监听tcp端口
netstat  -lu   //只列出所有监听udp端口
netstat  -lx   //只列出所有监听UNIX端口


(3)显示每个协议的统计信息

netstat  -s    //显示所有端口的统计信息
netstat  -st   //显示tcp端口的统计信息
netstat  -su   //显示udp端口的统计信息


(4)显示正在使用的socket的PID和进程名称

netstat  -pt  //显示正在运行的tcp sockets的PID和进行名称


注:netstat -p 可以和其他的选向一起使用,就可以添加“PID/进程名称”到输出信息中了。这样debug的时候就可以方便的发现特定端口运行的程序。

(5)输出中不显示主机、端口和用户名

如果不想让主机、端口、用户名显示,使用netstat -n可以使用数字来代替这些名称。

netstat  -an  //以数字形式显示主机、端口、用户名
netstat  -a  --numeric-hosts  //以数字形式显示主机
netstat  -a  --numeric-ports  //以数字形式显示端口号
netstat  -a  --numeric-users  //以数字形式显示用户名


(6)持续输出netstat信息

netstat  -c    //每隔一秒输出一次网络信息


(7)显示系统不支持的地址簇

netstat  --verbose    //显示系统不支持的地址簇


在输出打印信息的末尾会有如下信息:



(8)显示核心路由信息

netstat  -r    //显示核心路由信息
netstat  -rn   //显示核心路由信息(以数字形式)


(9)找出程序运行端口

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

netstat  -ap | grep ssh    //找出程序运行的端口
netstat  -an | grep ':80'    //找出运行在指定端口的进程


(10)显示网络接口列表

netstat  -i    //显示网络接口列表
netstat  -ie   //显示网络接口列表详细信息(类似于ifconfig)


(11)IP和TCP分析

查看连接某服务端口最多的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


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]}'


查看phpcgi进程数,如果接近预设值,说明不够用,需要增加:

netstat -anpo | grep "php-cgi" | wc -l


【参考】netstat命令 https://www.man.linuxde.net/netstat
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  netstat 网络监控