Linux网络监控命令——netstat

命令名称

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值