介绍常用的系统检测工具, 涉及网络, 内存, 性能等方方面面
tcpdump
凡是进行网络开发, 没有人会不知道这个工具. 虽然现在有wireshark
进行GUI抓包, 但是tcpdump
仍然是大多数人的最爱, (我算半个, 我一般是tcpdump
抓包, wireshark
查看)
常见的选项如下:
-n
: 使用ip:port
的形式, 而非主机名:服务
的形式表示-i
: 选择要指定的抓包网卡, 如,使用lo
表示本地抓包,enp2s0
表示网卡,ifconfig
查看网卡-v
: 输出更为详细的信息, 如显示IP数据包的TTL和TOS信息-t
: 不打印时间戳-e
: 显示以太网帧头部信息-c
: 指定抓包数量-x
: 以十六进制显示抓包的数据-X
: 同-x
, 额外打印对应的ASCII字符-s
: 设置抓包的长度-S
: 以绝对值显示TCP报文段的序号-w
: 保存文件
同时, 还支持进行过滤, 使用下面这些字段即可: type
, dir
, proto
type
: 指的是字段表示类型, 如:port 9000
表示端口9000上的内容dir
: 有src
和dst
两类, 表示目的端和源端proto
: 限制协议类型, 如icmp
,tcp
等
lsof
用来列出当前系统打开的文件描述符, 据此我们可以查看那些文件描述符被打开了
-i
: 显示socket文件描述符, 一般使用方法是lsof -i [4|6] [protocol][@hostname|ipaddr][:service|port]
如查看,本机httpd的文件描述符:lsof -i @localhost:80
-c
: 显示某一命令打开的所有文件描述符, 如lsof -c platinum
-p
: 显示指定进程打开的所有fd-t
: 仅显示打开了目标文件描述符的进程的PID- 还可以将文件名作为参数, 查看那些文件描述符打开了此文件
nc
短小精悍, 可以用来快速构建网络连接 可以像服务端一样运行, 也可以像客户端一样运行,此时类似于telnet
常用命令:
-i
: 设置时间间隔-l
: 以服务器形式运行, 监听指定端口, 默认为客户端-k
: 重复接受连接, 必须为服务器-n
: 使用地址:端口
形式, 而非名字:服务
-p
: 客户端指定端口号-s
: 设置本地主机发出的ip地址-C
: 强制HTTP消息边界-U
: 使用UNIX域通信-u
: 使用UDP, 默认使用TCP-w
: 指定超时时间-X
: 指定协议, 默认SOCKS5
strace
用来追踪系统调用的使用情况
netstat
功能强大的网络信息统计工具
常见字段信息:
proto
: 协议名Recv-Q
: 接受缓冲区的数据量 [监听套接字为待连接队列的当前长度]- `Send-Q: 未被对端确认的数据 [监听套接字表示最大的 min(backlog, somaxconn)]
Local Address
: 本端地址Foreign Address
: 对端地址State
: 无状态协议为空, TCP表示其状态
ss
此ss非彼ss, 使用来进行网络信息的统计,在连接数量很大时, 速度远远大于netstat
, 其利用了TCP底层的信息统计.
常用参数查看man page
可知, 主要参数同netstat
, 可视为netstat
的替代品
vmstat
用来实时输出系统的各类资源的使用情况, 如进程信息, 内存使用, CPU使用率 和IO信息等
mpstat
用来输出多处理器系统上, 各个CPU的使用率状态等
pref
Linux下的性能分析工具
free
显示系统已经使用和空闲的内存
top
常看当前进程情况, 类似于Win
下的任务管理器
iotop
查看io的使用情况