1 系统监测工具

编程入门 行业动态 更新时间:2024-10-11 01:12:35

1 系统监测<a href=https://www.elefans.com/category/jswz/34/1770073.html style=工具"/>

1 系统监测工具

1 系统监测工具

  • 常用工具
    • tcpdump
      • 常用的选项
      • 常用的表达式
      • 逻辑操作符
    • lsof
      • 常用的选项
      • 查询结果
    • netstat
      • 常见参数
      • 举例

常用工具

LInux提供了很多方便开发人员调试和测评服务的工具,本节按照使用频率依次介绍这些工具: tcpdumplsofnetstat

tcpdump

常用的选项

tcpdump是一款网络抓包工具,他给使用者提供了大量的选项,用来过滤数据包。

  1. 参数 -n:使用IP地址表示主机而不是主机名;使用数字表示端口号,而不是服务名;
  2. 参数 -i:指定要抓包的网卡,-i any表示抓取所有网卡的数据包;
  3. 参数 -t:不打印时间戳;
  4. 参数 -s:设置抓包时的抓取长度,默认是65535字节,这个默认值已经够大了。如果写-s0,表示抓一个完整的包而不要截断;
  5. 参数 -w:将抓包内容输出到文件中;
  6. 参数 -v:当分析和打印的时候, 产生详细的输出. 比如, 包的生存时间, 标识, 总长度以及IP包的一些选项. 这也会打开一些附加的包完整性检测, 比如对IP或ICMP包头部的校验和.;
  7. 参数 -vv:产生比-v更详细的输出. 比如, NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码;
  8. 参数 -vvv:产生比-vv更详细的输出. 比如, telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面;
  9. 参数 -c:仅抓取指定数量的数据包;
  10. 参数 -C:该选项使得tcpdump 在把原始数据包直接保存到文件中之前, 检查此文件大小是否超过file-size. 如果超过了, 将关闭此文件,另创一个文件继续用于原始数据包的记录. 新创建的文件名与-w选项指定的文件名一致, 但文件名后多了一个数字.该数字会从1开始随着新创建文件的增多而增加. file-size的单位是百万字节(这里指1,000,000个字节,并非1,048,576个字节, 后者是以1024字节为1k, 1024k字节为1M计算所得, 即1M=1024 * 1024 = 1,048,576);
  11. 参数 -W:此选项与-C 选项配合使用, 这将限制可打开的文件数目, 并且当文件数据超过这里设置的限制时, 依次循环替代之前的文件;
  12. 参数-r:从文件读取数据包信息并显示;
  13. 参数-S:打印TCP 数据包的顺序号时, 使用绝对的顺序号, 而不是相对的顺序号.

笔者经常抓包使用的命令是:
tcpdunp -vv -i ethxxx host xxx -s100 -W100 -C100 -w a.pcap

常用的表达式

tcpdump除了提供选项外,还支持使用表达式过滤数据包,表达式有3种:类型方向协议

  1. 类型:解释后面紧跟着的参数含义,当前支持的类型有:主机名或IP地址host、用CIDR方法表示的网络地址net、端口port、端口范围portrange
    比如抓取所有进入或离开sundown的数据包。
    tcpdump host sundown

    比如抓取所有210.27.48.1 主机收到的和发出的数据包
    tcpdump host 210.27.48.1

    比如抓取整个1.2.3.0/255.255.255.0网络上的数据包
    tcpdump net 1.2.3.0/255.255.255.0

  2. 方向src指定数据包的发送端,dst指定数据包的目的端,比如抓取进入端口31000的数据包;
    tcpdump dst port 31000

    比如抓取主机hostname发送的所有数据
    tcpdump -i eth0 src host hostname

    比如抓取所有送到主机192.168.1.100的数据包
    tcpdump -i eth0 dst host 192.168.1.100

  3. 协议:指定目标协议,比如抓取所有的ICMP数据包,
    tcpdump icmp

逻辑操作符

tcpdump的逻辑操作符与 编程语言操作符完全相同,包括and(或者&&),or(或者||),not(或者!),如果表达式比较复杂,可以用括号将它们分组,不过使用括号时,要么用反斜杠\进行转义,要么用单引号'括住

比如抓取helios 与 hot 或者与 ace 之间通信的包
tcpdump host helios and \( hot or ace \)

比如抓取主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的包
tcpdump host 210.27.48.1 and \(210.27.48.2 or 210.27.48.3 \)

比如抓取主ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包.
tcpdump ip host ace and not helios

比如抓取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2

比如抓取主机210.27.48.1接收或发出的telnet包,使用如下命令
tcpdump tcp port 23 and host 210.27.48.1

比如抓取udp 123 端口进行监视 123 为ntp的服务端口
tcpdump udp port 123

比如抓取来自主机1.2.3.4,目标端口为31000或者32000的数据
tcpdump 'src host 1.2.3.4 and (dst port 31000 or 32000)'

lsof

lsof(list open file)是一个列出系统打开了哪些文件描述符的工具,通过这个命令,我们可以查看一个进程打开了哪些文件描述符,也可以查看某个文件描述符被哪些进程打开了。

常用的选项

lsof的常用选项包括:

  1. lsof -i用以显示符合条件的文件描述符,完整格式如下,
    lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
    46 --> IPv4 或者 IPv6协议,
    protocol --> 传输层协议,TCP 或者UDP,
    hostname --> 主机名,
    hostaddr --> IP地址,
    service -->服务名,
    port --> 端口。
    比如显示所有连接到192.168.1.200的ssh服务端socket文件描述符
    lsof -i@192.168.1.200:22

    lsof -i//显示所有打开的文件描述符

    lsof -i:80//显示所有打开80端口的进程

    lsof -i -U//显示所有打开的端口和UNIX domain文件

    lsof -i UDP@[url]www.akadia:123//显示哪些进程打开了到www.akadia的UDP的123(ntp)端口的链接

    lsof -i tcp@ohaha.ks.edu.tw:ftp -r//不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新)

    lsof -i tcp@ohaha.ks.edu.tw:ftp -n//lsof -n不将IP转换为hostname,缺省是不加上-n参数

  2. lsof -u选项限定只列出所有被指定用户打开的文件描述符,可以通过逗号指定多个用户:
    lsof -u sms,root(该条也可使用lsof -u sms -u root)

  3. lsof -c显示指定命令打开的文件描述符
    lsof -c websrv

  4. lsof -p显示指定进程打开了哪些文件
    lsof -p 30297//显示那些文件被pid为30297的进程打开

  5. lsof abc.txt显示开启文件abc.txt的进程

查询结果

lsof的结果如下:

COMMAND     PID        USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
init          1        root  cwd       DIR                8,1     4096          2 /
init          1        root  rtd       DIR                8,1     4096          2 /
init          1        root  txt       REG                8,1   150584     654127 /sbin/init
udevd       415        root    0u      CHR                1,3      0t0       6254 /dev/null
udevd       415        root    1u      CHR                1,3      0t0       6254 /dev/null
udevd       415        root    2u      CHR                1,3      0t0       6254 /dev/null
udevd       690        root  mem       REG                8,1    51736     302589 /lib/x86_64-linux-gnu/libnss_files-2.13.so
syslogd    1246      syslog    2w      REG                8,1    10187     245418 /var/log/auth.log
syslogd    1246      syslog    3w      REG                8,1    10118     245342 /var/log/syslog
dd         1271        root    0r      REG                0,3        0 4026532038 /proc/kmsg
dd         1271        root    1w     FIFO               0,15      0t0        409 /run/klogd/kmsg
dd         1271        root    2u      CHR                1,3      0t0       6254 /dev/null

lsof输出各列信息的意义如下:
COMMAND:进程的名称,默认只显示前9个字符
PID:进程标识符
USER:拥有该文件描述符的用户的用户名
FD:文件描述符,应用程序通过文件描述符识别该文件。
其中,cwd表示进程的工作目录,rtd表示用户的根目录,txt表示进程运行的程序代码,mem表示直接映射到内存中的文件,有的FD是以“数字+访问权限”表示的,其中数字是文件描述的具体数值,访问权限包括r(可读),w(可写),u(可读可写),0u,1u,2u分别表示标准输入,标准输出,标准错误,3u表示处于LISTEN状态的监听socket,4u表示epoll内核事件表对应的文件描述符。
TYPE:文件类型,如DIR(目录)、REG(普通文件)、CHR(字符设备)等
DEVICE:文件所属设备
SIZE:文件的大小或者偏移值,比如“0t*”或者“0x*”,就是一个偏移值,其余就是个文件大小。
NODE:索引节点,对于socket,则显示协议类型,比如TCP
NAME:打开的文件名称

netstat

netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 ,多播成员等等。

常见参数

-a:(all) 显示所有选项,默认不显示LISTEN相关。
-t:(tcp) 仅显示tcp相关选项。
-u:(udp) 仅显示udp相关选项。
-n:使用IP地址表示主机而不是主机名;使用数字表示端口。
-l:仅列出有在 Listen (监听) 的服务状态。
-p:显示socket所属的进程的pid和名字
-r:显示路由信息,路由表
-e:显示扩展信息,例如uid等
-s:按各个协议进行统计
-c:每隔一个固定时间,执行该netstat命令

举例

netstat -a | moreActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 localhost:30037         *:*                     LISTENudp        0      0 *:bootpc                *:*
Proto:显示连接使用的协议。
Recv-Q:socket内核接收缓冲区中尚未被应用程序读取的数据量。
Send-Q :未被对方确认的数据量。
Local Address :本端地址和端口
Foreign Address:对端地址和端口
State:显示套接口当前的状态,对于无状态协议,比如UDP,显示为空。

更多推荐

1 系统监测工具

本文发布于:2024-02-11 11:36:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1680772.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:工具   系统

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!