【Linux】⽹络调试命令总结
ping
测试⽹络连通性
ifconfig
显⽰当前系统中所有⽹络设备,基于ICMP协议开发的。
netstat
参数
-a (all)显⽰所有选项,netstat 默认不显⽰ LISTEN 相关。
-t (tcp)仅显⽰ tcp 相关选项
-u (udp)仅显⽰ udp 相关选项
-n 不显⽰别名,能显⽰数字的全部转化成数字
-
l 仅列出有在 Listen (监听) 的服務状态
-p 显⽰建⽴相关链接的程序名
-r 显⽰路由信息,路由表
-e 显⽰扩展信息,例如uid等
-s 按各个协议进⾏统计 (重要)
-c 每隔⼀个固定时间,执⾏该 netstat 命令。
实例
netstat -apn|grep 6666 # 查看端⼝6666相关的⽹络状态
netstat Socket -x -alepn # 查看套接字⽹络连接状态
netstat -atn # 查看TCP套接字⽹络连接状态
lsof
列出已经打开的⽂件描述符
实例
lsof -Pni # **lsof -i** 默认也会显⽰ ip 地址和端⼝号的别名,我们只要使⽤ **-n** 和 **-P** 选项就能相对应地显⽰ ip 地址和端⼝号
lsof -i | grep myapp #  grep 命令过滤我们想要查看的进程打开的 fd 信息
lsof -p pid # 过滤出指定的进程打开的 fd 信息
tcpdump
参数
-i 指定要捕获的⽬标⽹卡名,⽹卡名可以使⽤前⾯章节中介绍的 ifconfig 命令获得;如果要抓所有⽹卡的上的包,可以使⽤ any 关键字。
## 抓取⽹卡ens33上的包
tcpdump -i ens33
## 抓取所有⽹卡上的包
tcpdump -i any
-X 以 ASCII 和⼗六进制的形式输出捕获的数据包内容,减去链路层的包头信息;-XX 以 ASCII 和⼗六进制的形式输出捕获的数据包内容,包括链路层的包头信息。
-n 不要将 ip 地址显⽰成别名的形式;-nn 不要将 ip 地址和端⼝以别名的形式显⽰。
-S 以绝对值显⽰包的 ISN 号(包序列号),默认以上⼀包的偏移量显⽰。
-vv 抓包的信息详细地显⽰;-vvv 抓包的信息更详细地显⽰。
-w 将抓取的包的原始信息(不解析,也不输出)写⼊⽂件中,后跟⽂件名:
tcpdump -i any -w filename
-r 从利⽤ -w 选项保存的包⽂件中读取数据包信息。
实例
tcpdump -i any -nn -S 'tcp port 3000'    # 查看经过 TCP 端⼝ 3000 上的数据包
nc
实例
使⽤ -l 选项(单词 listen 的第⼀个字母)在某个 ip 地址和端⼝号上开启⼀个侦听服务,以便让其他客户端连接。通常为了显⽰更详细的信息,会带上 -v 选项。
nc -v -l 127.0.0.1 6000 # 模拟⼀个服务器程序
⽤ nc 命令模拟⼀个客户端程序时,我们不需要使⽤ -l 选项,直接写上 ip 地址(或域名,nc 命令可以⾃动解析域名)和端⼝号即可
nc -v www.baidu 80 # 模拟⼀个客户端连接百度 web 服务器
nc -v -p 5555 www.baidu 80 # -p 选项指定使⽤ 5555 端⼝连接上了百度
telnet
实例
# 检测指定 ip 地址和端⼝号的侦听服务是否存在
telnet 120.55.94.78 8888 # telnet ip port
cur
实例
模拟发送 http 请求
curl命令发送post请求带参数curl www.baidu # curl 页⾯url 默认⾏为是把⽬标页⾯内容输出到 shell 窗⼝
# -X 选项来显式指定请求是 GET 还是 POST ⽅式(不指定使⽤默认 GET ⽅式)
curl -X GET www.baidu/index.php?s=9
curl -X POST -d 'somepostdata' 'www.somesite/api/v1/chat'
# 发送 http 请求时设置增加⼀些头部信息使⽤ -H(或 –header)指定
curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: application/json' -H 'X-Requested-With: XMLHttpRequest' -d 'somepostdata' 'www.somesite/api/v1/chat' # http 的应答结果中包含 http 头部信息,可以使⽤ -i 选项
curl -I www.baidu/
strace
跟踪程序执⾏时进程的系统调⽤以及所收到的信号
# 跟踪进程号为pid的进程所收到的信号
sudo strace -e trace=signal -p pid
ps
查看进程状态的命令
# server为执⾏的程序名称
ps -eo pid,ppid,sid,tty,pgrp,comm,cmd | grep -E 'bash|PID|server'
valgrind
内存泄漏检查⼯具,帮助查程序中的bug和改进程序性能的⼯具集;最终要的⼯具是memceck内存检查功能,⽤于检查内存的泄漏# On-off是⼀些开关 server是可执⾏程序的⽂件名
valgrind --tool=memcheck On-off server
# 如下开关
# --tool=memckeck : 使⽤valgrind⼯具集中的memcheck⼯具
# --leak-check=full : 指的是完全full检查内存泄漏
# --show-reachable=yes : 显⽰内存泄漏的地点
# --trace-children=yes : 跟⼊⼦进程
# -- :将调试信息输出到,不输出到屏幕

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。