介绍常用的系统检测工具, 涉及网络, 内存, 性能等方方面面
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的使用情况