• Home
  • About
    • Road to Coding photo

      Road to Coding

      只要那一抹笑容尚存, 我便心无旁骛

    • Learn More
    • Email
    • Github
  • Posts
    • All Posts
    • All Tags

常用的系统检测工具

16 Mar 2019

介绍常用的系统检测工具, 涉及网络, 内存, 性能等方方面面

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的使用情况



Tools Share Tweet +1