linux网络开发者定位问题常用工具和命令总结
本文章来自我的微信个人技术公众号---网络技术修炼,公众号中总结普及网络基础知识,包括基础原理、网络方案、开发经验和问题定位案例等,欢迎关注。
Linux网络开发者面临的问题往往比较复杂,因此需要使用一些工具和命令来进行定位和解决。在本篇博客中,我将总结一些常用的Linux网络开发者工具和命令,包括网络包观测、各层网络状况快速诊断、网络关键统计计数收集、性能诊断、问题复现等方面的命令总结。
分类 | 命令、工具 | 作用 | 备注 |
包观测 |
tcpdump |
用于抓取网络数据包。通过 tcpdump 命令可以捕获网络数据包,并进行分析和诊断。 |
|
wireshark&&tshark |
分析网络数据包。 |
wireshark可视化分析,tshark命令行分析。 |
|
tcpflow |
用于抓取 TCP 流量并保存到文件。通过 tcpflow 命令可以捕获 TCP 流量,并将每个 TCP 连接的数据保存到不同的文件中。 |
比如可以快速将每个连接的包分发到不同文件保存。 | |
ngrep |
用于过滤和显示网络数据包。通过 ngrep 命令可以过滤和显示满足特定条件的数据包。 |
比如快速过滤http GET和POST请求。 | |
快速验证各层网络情况 |
ping |
用于测试主机之间是否能够互相通信。通过向目标主机发送 ICMP 报文,可以确定网络连接是否正常。 |
检查ip层是否ok。 |
telnet |
用于远程登录和测试网络服务。通过 telnet 命令可以远程登录主机、测试网络服务是否可用,并进行交互式操作。 |
检查tcp握手是否ok。 |
|
curl |
用于从命令行发送 HTTP 请求。通过 curl 命令可以发送 GET、POST 等 HTTP 请求,并查看服务器返回的响应。 |
检查http是否ok。 |
|
openssl |
OpenSSL 是一个常用的加密工具库,可以用来实现 SSL/TLS 通信、数字证书签发和管理、密码学算法等功能。 |
检查ssl握手情况,证书内容等。 |
|
网络路径状况查看 |
traceroute |
用于确定数据包从一个主机到另一个主机所经过的路由路径。 |
|
mtr |
用于网络故障定位和性能分析。mtr 命令可以连续发送 ICMP 报文,并在每一跳的路由器上进行网络延迟和丢包率的统计,用于找出网络故障的根源。 |
||
网络状态和计数查看 |
netstat |
用于查看网络连接、路由表、网络接口状态等信息。通过 netstat 命令可以了解当前系统的网络状况。 |
|
ss |
ss 命令是 netstat 的替代品,用于查看网络连接状态、监听端口、网络接口等信息。与 netstat 不同的是,ss 命令提供了更快的速度和更多的选项。 |
||
ifconfig |
用于查看和配置网络接口。通过 ifconfig 命令可以查看网络接口的 IP 地址、MAC 地址、网络状态等信息。 |
||
ip |
配置和管理网络接口、路由表、ARP 缓存和其他网络相关的属性。 |
||
curl cip.cc |
查看网络出口地址。 |
||
ethtool |
用于查看和配置网络接口的驱动程序。通过 ethtool 命令可以查看网络接口的状态、速度、双工模式等信息,并进行网络性能调优。 |
||
iftop |
用于实时监控网络流量。iftop 命令可以显示每个网络接口的实时流量、连接数、连接速度等信息,用于快速诊断网络瓶颈和流量异常。 |
||
nethogs |
用于查看进程占用的网络带宽。通过 nethogs 命令可以查看每个进程占用的网络带宽、连接数和流量等信息,用于找出网络资源占用高的进程。 |
||
dns相关 |
nslookup |
用于查询 DNS 服务器上的主机名和 IP 地址信息。通过 nslookup 命令可以查看主机名对应的 IP 地址、反向 DNS 解析等信息。 |
|
dig |
查询 DNS 服务器上的主机名和 IP 地址信息。与 nslookup 不同的是,dig 命令提供了更多的选项和功能。 | ||
系统异常查看 |
dmesg |
用于查看内核日志。通过 dmesg 命令可以查看系统内核的日志信息,包括硬件检测、设备驱动加载等信息,用于排查和分析系统硬件和驱动问题。 |
比如oom、segment fault都可以在这里面看到相应的记录。 |
systemctl |
用于管理 systemd 服务。通过 systemctl 命令可以启动、停止、重启和查询 systemd 服务的状态,用于排查和处理系统服务异常问题。 |
||
journalctl |
用于查看系统日志。通过 journalctl 命令可以查看系统日志、过滤日志信息、按时间戳或者进程名等条件搜索日志信息,用于排查和分析系统异常和错误。 |
||
内存异常 |
valgrind |
检查程序在运行时的内存访问错误、泄漏等问题。 | 无需修改代码 |
asan |
可以检测常见的内存安全问题,例如缓冲区溢出、使用未初始化的内存等。 | ||
性能定位 |
top |
实时监控系统 CPU、内存、进程等资源的使用情况,用于找出系统资源占用高的进程。 |
看出是用户态高还是内核态高,是否是io高等。 |
vmstat |
用于显示系统虚拟内存(VM)的使用情况。它提供了对系统内存、进程、CPU 等性能数据的实时监控。 |
可快速看出上下文切换次数。 |
|
pidstat |
进程级别统计cpu、io、上下文切换等信息。 |
看出上下文切换中自愿切换和非自愿切换次数。 | |
sar |
监测 CPU 使用率、磁盘 I/O、网络流量、内存使用情况、进程活动等多个方面的数据,并将这些数据保存到本地或远程系统中,以供后续分析和处理。 |
可快速统计流量。 | |
perf |
可以用于测量和分析系统各个方面的性能数据,包括 CPU、内存、磁盘、网络等方面的数据。 |
cpu采样一把好手,看哪些函数是高频出现。还可以结合其他工具生成火焰图。 |
|
pprof |
用于分析 Go 应用程序性能的工具,可以分析 CPU、内存和代码分布等方面的性能问题。 |
go语言专用更强大的采样工具。 |
|
strace |
用于跟踪进程的系统调用和信号。 |
||
bpftrace |
动态跟踪工具,它使用 BPF(Berkeley Packet Filter)技术来实现高效的内核和用户空间跟踪功能。 |
比如打印某个函数的系统调用栈和用户空间调用栈。脚本的方式使用ebpf工具。 | |
bcc |
基于 BPF(Berkeley Packet Filter)技术的动态跟踪和性能分析工具集,主要用于 Linux 系统的内核和用户空间程序分析。 |
比bpftrace更灵活。 | |
网络场景构造 |
iptables |
用于设置和管理 Linux 内核的防火墙。通过 iptables 命令可以设置网络连接的规则、过滤数据包、进行网络地址转换等操作。 |
可以对特定特征进行丢包,转换。 |
tc |
流量控制、网络流量调度和队列管理的工具,可用于实现各种 QoS(Quality of Service)和网络流量控制功能 |
比如对特定流量增加丢包率、时延等。 |
|
postman |
一款流行的 API 测试工具,可以帮助开发人员快速创建、测试、调试和共享 API。 |
||
流量复制和重放 |
goreplay |
一个 HTTP 实时流量复制工具。支持流量的放大、缩小,频率限制,还支持把请求记录到文件,方便回放和分析,也支持和 ElasticSearch 集成。 |
|
tcpreplay |
一种 pcap 包的重放工具,它可以将用 ethreal、wireshark工具抓下来的包原样或经过任意修改后重放回去。它允许你对报文做任意的修改指定重放报文的速度等,这样tcpreplay 就可以用来复现抓包的情景以定位 bug,以极快的速度重放从而实现压力测试。 |
||
tcpcopy |
一种请求复制工具 ,通过复制在线数据包,修改 TCP/IP 头部信息,发送给测试服务器,达到欺骗测试服务器的TCP 程序的目的。 |
||
性能压测 |
iperf |
用于测试网络带宽和性能。通过 iperf 命令可以在两个主机之间进行带宽测试和性能测试,用于评估网络的实际性能。 |
适合传输层压测、带宽压测等场景。 |
ApacheBench (ab) |
一个基于 Apache HTTP 服务器的性能测试工具,用于测试 Web 服务器的负载能力 |
适合应用层压测。 |
|
wrk |
一个高性能的 HTTP 压力测试工具,支持多线程和支持 Lua 脚本扩展。 |
||
stress |
一个简单但功能强大的 Linux 压力测试工具,可以测试 CPU、内存、I/O、网络等方面的性能。 |

linux网络开发者定位问题常用工具和命令总结的更多相关文章
- 【转帖】Linux上,最常用的一批命令解析(10年精选)
Linux上,最常用的一批命令解析(10年精选) https://juejin.im/post/5d134fbfe51d4510727c80d1 写的挺好呢 Linux这么多命令,通常会让初学者望而生 ...
- linux基本语法和常用运维命令
linux上的操作一般是命令行操作,看起来很高大上,让人畏而远之. Help!Help! 忽然间闯入的linux黑黑的世界,怎么办,不要慌.赶紧敲出一个help命令,然后回车,黑色的窗口就会展示一些常 ...
- Linux学习笔记:常用100条命令(一)
linux常用命令 1.关机 shutdown -h now 立刻关机 poweroff shutdown -r now 立刻重启 reboot logout 注销 2.进入图形界面 startx 3 ...
- linux常用工具及命令
1.windows复制文件到linux可以使用工具winscp工具 2.建立软连接命令(将/software/run.log的文件指向/usr/local/logs/中): cd /usr/local ...
- linux运维人员常用150个命令汇总
命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) l ...
- Linux上,最常用的一批命令解析(10年精选)
Linux这么多命令,通常会让初学者望而生畏.下面是我结合日常工作,以及在公司的内部培训中,针对对Linux不是很熟悉的同学,精选的一批必须要搞懂的命令集合.任何一个命令其实都是可以深入的,比如tai ...
- Linux下深度学习常用工具的安装
.Matlab 2015 64bit 的安装 (一)安装包下载 百度网盘: [https://pan.baidu.com/s/1gf9IeCN], 密码: 4gj3 (二)Vmware 使用Windo ...
- Linux上,最常用的一批命令解析【10年精选】
原文链接:https://mp.weixin.qq.com/s/QkqHexs_kOgy_5OwbwyFww 建议点击原文链接查看 不同平台linux客户端连接工具分享: windos终端神器:SSH ...
- Linux运维最常用150个命令
线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) ls 全拼list ...
- Linux学习笔记:常用100条命令(二)
linux常用命令 1.vi中复制快捷键 yy --复制 p --粘贴 2.vi中保存退出 ZZ 3.linux解压zip unzip 4.查看软件组包 yum grouplist 5.安装组包 yu ...
随机推荐
- openfire开源IM服务器知识分享+社交app实战
一. 概述 Openfire最主要的功能是实现XMPP服务器,简单来说,openfire为我们提供一个固定的地址,我们只需要向openfire服务器发送标准的XMPP信息(即XML文件流), ...
- 导入ssm项目时,项目基本的配置文件
一.ssm框架基本的配置文件 上面的这些配置文件对于比较简单的ssm项目其实大同小异,逻辑上是差不多的. 在config目录下 在lib下就是各种jar包 二.导入ssm项目后,本地环境配置和项目本身 ...
- 第一个Java程序(自动关机程序)
我的第一个程序 1.新建java工程 打开Eclipse,点击File,选择New,点击Java Project ,新建名为demo的工程,如图所示: 2.编写程序 1.打开demo工程,鼠标右键sr ...
- vue iview前端直接上传OSS
1. 首先安装oss npm install ali-oss --save 2. // template部分 <Upload ref="upload" type=" ...
- (三).JavaScript的分支结构和循环结构
1. 分支结构 1.1 分支语句之单分支 ①.语法: if(值,如果不是布尔值会强制转换成布尔值) { 代码块; } ②.案例: // 案例:如果a变量的值加键盘上输入的数大于100,就打印我爱你二狗 ...
- 关于uni-app开发的微信小程序顶部导航条机型适配
背景: 小程序顶部导航栏那里的样式和功能都是小程序自带的,当我们在pages.json里的pages里新加一条页面配置时,会自动生成一个带顶部导航栏的空白页面,当然也可以再配置里"navig ...
- Hive启动留下的RunJar进程不能使用Kill -9 杀不掉怎么办?
1.问题示例 [Hadoop@master Logs]$ jps 3728 ResourceManager 6976 RunJar 7587 Jps 4277 Master 3095 NameNode ...
- 查看Linux内存占用情况
参考链接: 查看Linux磁盘及内存占用情况 linux的top命令参数详解 1.ps ps aux --sort -rss a 显示所有终端机下执行的进程,包括其他用户的进程(有的进程没有终 ...
- element plus按钮点击后不会自动失去焦点的解决方案及Vue3中如何挂载全局函数并在组件中使用
一.element plus按钮点击后不会自动失去焦点,该如何解决? 在按钮点击点击回调中增加以下代码: event.target.blur() if (event.target.nodeName = ...
- linux查看已知进程PID所在的目录
pwdx 命令 pwdx PID [was@CMTRMWAS1 ~]$ pwdx 31996 31996: /was/AppServer/profiles/AppSrv03