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


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

    netstat

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

    语法
    netstat [-a][-e][-n][-o][-p Protocol][-r][-s][Interval][1]
    
    • 1
    • 2
    参数或选项说明
    -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 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

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

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

    netstat -ant
    
    • 1

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

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

    # 只显示监听端口
    netstat -l
    # 显示监听TCP端口
    netstat -lt
    # 显示监听UDP端口
    netstat -lu
    # 显示监听UNIX端口
    netstat -lx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

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

    # 显示所有端口的统计信息
    netstat -s
    # 显示所有TCP的统计信息
    netstat -st
    # 显示所有UDP的统计信息
    netstat -su
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4. 显示 PID 和进程名称

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

    sudo netstat -p
    
    • 1

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

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

    netstat -anp|grep:8080|wc -l
    
    • 1

    7. 打印网络接口信息

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

    netstat -ie
    
    • 1

    更多用法

    打印 active 状态的连接

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

    netstat -atnp | grep ESTA
    
    • 1

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

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

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

    sudo netstat -aple | grep ntp
    
    • 1

    其它相关操作命令

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

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

    查看网卡信息

    cat  /sbin/ifconfig
    
    • 1

    查看cpu配置

    cat /proc/cpuinfo
    
    • 1

    查看mem配置

    cat /proc/meminfo
    
    • 1

    修改hosts配置

    vim /etc/hosts
    
    • 1

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

  • 相关阅读:
    Android audio 框架 之AudioPatch
    『无为则无心』Python日志 — 64、Python日志模块logging介绍
    【图像配准】基于surf实现图像特征点检测及图像拼接处理附matlab代码
    PGL图学习之图神经网络ERNIESage、UniMP进阶模型[系列八]
    单例模式【JavaEE初阶】
    ModuleNotFoundError: No module named ‘xxx‘
    使用句法依存分析实现KBQA中的约束挂载
    熬夜也要肝完的阿里内部面试官手册,吃透直接拿下大厂心仪offer
    力扣第 365 场周赛虚拟参赛
    Stream流操作
  • 原文地址:https://blog.csdn.net/weixin_41948075/article/details/125536073