netstat-网络性能分析常用命令

netstat-网络性能分析常用命令

netstat

netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知有哪些网络连接正在运作。使用时如果不带参数,netstat显示活动的 TCP 连接。

语法
netstat [-a][-e][-n][-o][-p Protocol][-r][-s][Interval][1]
参数或选项 说明
-a或–all 显示所有连线中的Socket;
-n或–numeric 直接使用ip地址,而不通过域名服务器;
-p或–programs 显示正在使用Socket的程序识别码和程序名称;
-t或–tcp 显示TCP传输协议的连线状况;
-e或–extend 显示网络其他相关信息;
-u或–udp 显示UDP传输协议的连线状况;
-v或–verbose 显示指令执行过程;
-V或–version 显示版本信息;
-A<网络类型>或–<网络类型> 列出该网络类型连线中的相关地址;
-c或–continuous 持续列出网络状态;
-C或–cache 显示路由器配置的快取信息;
-F或–fib 显示FIB;
-g或–groups 显示多重广播功能群组组员名单;
-h或–help 在线帮助;
-i或–interfaces 显示网络界面信息表单;
-l或–listening 显示监控中的服务器的Socket;
-M或–masquerade 显示伪装的网络连线;
-N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称;
-o或–timers 显示计时器;
-r或–route 显示Routing Table;
-s或–statistice 显示网络工作信息统计表;
-w或–raw 显示RAW传输协议的连线状况;
-x或–unix 此参数的效果和指定”-A unix”参数相同;
–ip或–inet 此参数的效果和指定”-A inet”参数相同。

实例

下面举些实例,跟着操作加深理解

1. 列出所有端口情况

# 列出所有端口
netstat -a 
# 列出所有TCP端口
netstat -at
# 列出所有UDP端口
netstat -au 

从整体上看,Linux 网络性能调试工具Netstat命令的输出结果可以分为两个部分:第一部分:是Active Internet connections,称为有源TCP连接,在上面的输出结果中,这一部分没有内容,表示暂时还没有TCP连接。第二部分:是Active UNIX domain sockets,称为有源Unix域套接口。输出结果显示的是Unix域套接口的连接情况:

  • Proto显示连接使用的协议。
  • RefCnt表示连接到本套接口上的进程号。
  • Types显示套接口的类型。
  • State显示套接口当前的状态。
  • Path表示连接到套接口的其它进程使用的路径名。

禁用反向域名解析,加快查询速度
默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。

netstat -ant

2. 列出所有处于监听状态的 Sockets

任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。

# 只显示监听端口
netstat -l
# 显示监听TCP端口
netstat -lt
# 显示监听UDP端口
netstat -lu
# 显示监听UNIX端口
netstat -lx

注意:不要使用 -a 选项,否则 netstat 会列出所有连接,而不仅仅是监听端口。

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

# 显示所有端口的统计信息
netstat -s
# 显示所有TCP的统计信息
netstat -st
# 显示所有UDP的统计信息
netstat -su

4. 显示 PID 和进程名称

使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。

sudo netstat -p

5. 显示核心路由信息

使用 -r 选项打印内核路由信息,打印出来的信息与 route 命令输出的信息一样。我们也可以使用 -n 选项禁止域名解析。

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
192.168.130.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

netstat -rn # 显示数字格式,不查询主机名称

Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.130.1 0.0.0.0 UG 0 0 0 eth0
192.168.130.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

6. 通过进程关键词过滤查找进程

# 通过进程关键词过滤查找进程
netstat -anp | grep 进程关键词或端口


# 查看ssh进程
netstat -antp | grep ssh
# 显示结果:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 734/sshd
tcp 0 52 192.168.130.20:22 119.129.118.189:58737 ESTABLISHED 1846/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 734/sshd

# 查看进程也可以用ps命令
# 如 查看指定服务的进程号,如tomcat服务
ps aux|grep tomcat

# 查看端口为22的进程
netstat -antp | grep 22

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 734/sshd
tcp 0 52 192.168.130.20:22 119.129.118.189:58737 ESTABLISHED 1846/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 734/sshd


# 查看所有进程和进程的服务id
netstat -anp

通常用于查看某个端口号下建立的连接数,如8080端口号下的连接数统计

netstat -anp|grep:8080|wc -l

7. 打印网络接口信息

netstat 也能打印网络接口信息,但单独使用-i选项输出信息比较原始。将 -e 选项和 -i 选项搭配使用,可以输出用户友好的信息。 同ifconfig 输出的信息一样

netstat -ie

更多用法

打印 active 状态的连接

active 状态的套接字连接用 “ESTABLISHED” 字段表示,所以我们可以使用 grep 命令获得 active 状态的连接:

netstat -atnp | grep ESTA

配合 watch 命令监视 active 状态的连接:

watch -d -n0 "netstat -atnp | grep ESTA"

查看服务是否在运行
如果你想看看 http,smtp 或 ntp 服务是否在运行,使用 grep。使用 grep 命令你可以查看 http 或 smtp 或其它任何你想查看的服务

sudo netstat -aple | grep ntp

其它相关操作命令

netstat -anp | grep tomcat查找到某个进程的pid后,如果下一步想结束进程,可以使用kill命令

kill -15 pid 立即释放资源
kill -9 pid 不会立即释放资源

查看网卡信息

cat  /sbin/ifconfig

查看cpu配置

cat /proc/cpuinfo

查看mem配置

cat /proc/meminfo

修改hosts配置

vim /etc/hosts

参考netstat 命令详解
netstat 的10个基本用法

猜你喜欢

转载自blog.csdn.net/weixin_41948075/article/details/125536073