本篇用于记录一些Linux下命令或者工具的使用
一、tcpdump
tcpdump是一个网络抓包工具,可以根据主机、接口、协议等选项过滤出想要从网络上抓取的数据包,也可以根据选项指明数据包表达的格式。
tcpdump的选项:
-i 指定要监听的网卡接口
-n 使用ip地址表示主机;使用数字表示端口
-e 显示以太网帧头部信息
tcpdump还可以用表达式来进一步过滤数据包,可以分为三种方式:类型、方向、协议
- 类型。主要有host(主机名或ip),net(网络地址),port(端口),portrange(端口范围)
- 方向。src表示数据包发送源地址,dst表示数据包目的地址
- 协议。指定抓取包的协议
除此之外,我们可以用逻辑操作符表达更加复杂的意思,&&(与),||(或),not(非)
tcpdump host myip && tcp
二、lsof
lsof(list open file)是一个列出当前系统打开的文件描述符工具,可以通过其查看哪个进程打开了哪些文件描述符。也可以用它来查看某个端口是否被使用(lsof : port)。
lsof选项
-i [46] [protocl][@hostname|ipaddr][:service|port]
显示socket文件描述符
-u 显示指定用户启动的所有进程打开的所有文件描述符
-c 显示指定的命令打开的所有文件描述符
example: lsof -c ./webbench
-p 显示指定进程打开的所有文件描述符
-t 显示打开了目标文件描述符的进程的PID
三、nc
nc可以用来快速构建网络连接(有点类似telnet)。我们可以用它来以服务器方式运行,监听某个端口并接受客户连接,因此他可用来调试客户端程序。可以用来测试服务器哪几个端口打开,也可以用来测试网速。
在同一台机器上测试,客户端运行
nc -l 9999 > /dev/null
服务器端写入10G数据,得到网络带宽803MB/s,与机器的硬件与网络环境都有关系
详见https://www.cnblogs.com/nmap/p/6148306.html
nc命令常用选项
-i 设置数据包发送时间间隔
-l 以服务器方式运行,监听指定端口
-p 以客户端方式运行
四、netstat
netstat是一个网络信息统计工具,可以打印本地网卡接口上全部连接、路由表信息、网络接口信息等,(其主要用于第一个功能即显示TCP连接及其状态信息,可以利用route和ifconfig命令输出更加丰富的路由表信息),除此之外,netstat -tunlp |grep port也可以查看端口的状态
netstat命令常用选项
-n 使用IP地址表示主机,使用数字表示端口
-a 显示结果中也包含监听socket
-t 仅显示TCP连接
-u 仅显示udp连接
-r 显示路由信息
-i 显示网卡接口的数据流量
-l 仅列出在listen的服务状态
-p 建立相关连接的程序名
五、vmstat
vmstat(virtual memory statistics)能实时的输出系统和各个资源的使用情况,如进程信息、内存使用情况、CPU使用情况以及IO使用情况。(类似于top)
vmstat 5 3 //表示每个5秒输出一次统计信息,一共输出3次
- procs进程信息。
- memory内存信息,“swpd”表示虚拟内存使用数量,“free”表示空闲内存数量,“buff”表示作为buffer cache的数量(从磁盘读到内存的cache),“cache”指的是“page cache”(待写入磁盘的数据会先放到page cache,然后等待磁盘中断程序写入磁盘)
- io,块设备使用信息
- System,系统信息
- cpu,us表示系统在用户空间的时间占总CPU运行的时间比,sy表示系统在内核的时间占总CPU运行的时间比,id表示CPU处于空闲状态占总CPU运行的时间比,wa表示等待IO事件的事件占总CPU运行时间的比例
参考 《Linux高性能服务器编程》