常常用来检测服务器行为的工具tcpdump,nc, strace, lsof, vmstat, ifstat, mpstat.
tcpdump
tcpdump是一款经典的网络抓包工具,还有常用的Wireshark。
tcpdump的参数提供了大量的选项:
-n:使用IP地址表示主机,使用数字表示端口号;
-i:指定要监听的网卡接口,“-i any”表示抓取所有网卡接口上的数据包。
-v:输出一个稍微详细的信息
-t:不打印时间戳
-e:显示以太网帧头部;
-c:仅抓取指定数量的包
-x:以十六禁止显示数据包中的内容,但是不显示头部
-XX:与-x相同不过还打印每个十六进制对应的ASCII码,并且打印头部;
-s:设置抓包时的抓取长度
-S:以绝对值显示TCP报文段的序号,而不是相对值
-w:将tcpdump输出以特殊的格式定向到某个文件
-r: 以文件读取数据包信息并显示。
tcpdump还可以分为三个形式:类型,方向,协议。
类型:host:主机名(或者IP地址);net:CIDR表示的网络地址;port:端口号;portrange:端口号范围
方向:src:指定数据包的发送端;dst:指定数据包的目的端。
协议:指定目的协议;
可参考 man tcpdump
lsof
lsof 是列出当前系统打开的文件描述符的工具。通过该工具能够了解到感兴趣的进程打开了哪些文件描述符。
lsof 选项包括:
-i:显示socket文件描述符,lsof -i [4/6] [protocol] [@hostname|ipaddr] [:service|port]
其中 4和6分别表示IPV4和IPV6;protocol表示传输层协议,可以是TCP和UDP;hostname表示主机名,ipaddr指定主句的ip地址;service表示服务名;port指定端口号;
-u,显示指定用户启动的所有进程打开的所有文件的描述符
-c,显示指定的命令打开所有的文件描述符
两者后都要跟参数。
-p,显示指定进程打开的所有文件的文件描述符;
-t,仅显式打开了目标文件描述符的进程pid
COMMAND,执行程序所使用的终端命令
PID:文件描述符所属进程PID
USER :描述拥有该文件描述符的用户名
FD:文件描述符的描述,cwd:文件目录,rtd:用户的根目录 txt:进程的运行程序代码,mem表述直接映射到内存中的文件