Linux 常用工具

目录

进程间通讯设施状态检测 - IPCS

ABSTRACT

FORMAT

EXPLAIN

DEMO

ipcs 显示所有的IPC信息

ipcs -a 显示所有的IPC信息

ipcs -q 显示所有的消息队列

ipcs -m 显示所有的共享内存信息

ipcs -s 显示所有的共享内存信息

ipcs -m -l 显示所有的共享内存信息

ipcs -u 显示状态摘要

Linux 系统运行时长 - uptime

ABSTART

FORMAT

EXPLAIN

DEMO

CPU平均负载和磁盘活动 - iostat

ABSTART

FORMAT

EXPLAIN

DEMO

iostat

iostat -m

iostat -d sda

iostat -d -k 1 1

监控、收集和汇报系统活动 - sar

ABSTART

FORMAT

EXPLAIN

DEMO

sar -u 查看CPU使用情况

sar -q 查看平均负载

sar -r 查看内存使用情况

监控多处理器的使用情况 - mpstat

ABSTART

FORMAT

EXPLAIN

DEMO

mpstate -P ALL 1 1

监控进程的内存使用情况 - pmap

ABSTART

FORMAT

EXPLAIN

DEMO

描述信息含义

跟踪某进程的内存占用

查看系统调用信息 - strace

ABSTART

FORMAT

EXPLAIN

DEMO

strace -o strace.log -tt -p 24298

linux 网络统计监控工具 - netstat

ABSTART

FORMAT

EXPLAIN

DEMO

列出所有端口情况

列出所有处于监听状态的 Sockets

显示每个协议的统计信息

显示 PID 和进程名称

显示核心路由信息

查看端口和服务

网络数据包分析工具 - tcpdump

ABSTART

FORMAT

EXPLAIN

DEMO

tcpdump --i eth0 port -A

远程登陆服务的标准协议 - telnet

ABSTART

FORMAT

EXPLAIN

DEMO

探测目标服务器IP 的某个端口是否开启

获取实时网络统计信息 - iptraf

ABSTART

FORMAT

EXPLAIN

DEMO

立即显示指定接口上的详细信息:iptraf-ng -d ens33

显示网络接口带宽使用情况 - iftop

ABSTART

FORMAT

EXPLAIN

DEMO

查找流量大户


进程间通讯设施状态检测 - IPCS

ABSTRACT

ipcs命令用于报告Linux中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。i

FORMAT

ipcs [选项] [参数]

eg:

ipcs [resource ...] [output-format]

ipcs [resource] -i <id>

EXPLAIN

The output is from 'ipcs -h’

选项:

-i, --id <id> 打印由 id 标识的资源的详细信息

-h, --help 显示此帮助并退出

-V, --version 输出版本信息并退出

资源选项:

-m, --shmems 共享内存段

-q, --queues 消息队列

-s, --semaphores 信号量

-a, --all 全部(默认)

输出格式:

-t, --time 显示附加、脱离和更改时间

-p, --pid 显示 PID 的创建者和最后操作

-c, --creator 显示创建者和拥有者

-l, --limits 显示资源限制

-u, --summary 显示状态摘要

--human 以易读格式显示大小

-b, --bytes 以字节数显示大小

DEMO

ipcs 显示所有的IPC信息

--------- 消息队列 -----------

键 msqid 拥有者 权限 已用字节数 消息

------------ 共享内存段 --------------

键 shmid 拥有者 权限 字节 连接数 状态

0x00000000 196608 zy 600 524288 2 目标

0x00000000 327681 zy 600 524288 2 目标

0x00000000 458755 zy 600 524288 2 目标

0x00000000 688133 zy 600 16777216 2 目标

--------- 信号量数组 -----------

键 semid 拥有者 权限 nsems

ipcs -a 显示所有的IPC信息

--------- 消息队列 -----------

键 msqid 拥有者 权限 已用字节数 消息

------------ 共享内存段 --------------

键 shmid 拥有者 权限 字节 连接数 状态

0x00000000 196608 zy 600 524288 2 目标

0x00000000 327681 zy 600 524288 2 目标

0x00000000 458755 zy 600 524288 2 目标

0x00000000 688133 zy 600 16777216 2 目标

--------- 信号量数组 -----------

键 semid 拥有者 权限 nsems

ipcs -q 显示所有的消息队列

--------- 消息队列 -----------

键 msqid 拥有者 权限 已用字节数 消息

ipcs -m 显示所有的共享内存信息

------------ 共享内存段 --------------

键 shmid 拥有者 权限 字节 nattch 状态

ipcs -s 显示所有的共享内存信息

------------ 共享内存段 --------------

键 shmid 拥有者 权限 字节 nattch 状态

ipcs -m -l 显示所有的共享内存信息

---------- 同享内存限制 ------------

最大段数 = 4096

最大段大小 (千字节) = 18014398509465599

最大总共享内存 (千字节) = 18014398509481980

最小段大小 (字节) = 1

ipcs -u 显示状态摘要

---------- 消息状态 -----------

已分配队列数 = 0

已用消息头(header)数 = 0

已用空间 = 0 字节

---------- 共享内存状态 ------------

段已分配 0

页已分配 0

页驻留 0

页交换 0

交换性能:0 次尝试 0 次成功

--------- 信号量状态 -----------

已使用数组 = 0

已分配信号量数 = 0

Linux 系统运行时长 - uptime

ABSTART

uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

FORMAT

uptime(选项)

EXPLAIN

-v:显示指令的版本信息

DEMO

~]# uptime -V #显示uptime命令版本信息

procps version 3.2.7

~]# uptime

15:31:30 up 127 days, 3:00, 1 user, load average: 0.00, 0.00, 0.00

CPU平均负载和磁盘活动 - iostat

ABSTART

iostat 主要用于输出磁盘IO 和 CPU的统计信息。

ubuntu 系统下安装命令:sudo apt install sysstat

FORMAT

iostat [选项] [<时间间隔>] [<次数>]

EXPLAIN

-c: 显示CPU使用情况
-d: 显示磁盘使用情况
-N: 显示磁盘阵列(LVM) 信息
-n: 显示NFS 使用情况
-k: 以 KB 为单位显示
-m: 以 M 为单位显示
-t: 报告每秒向终端读取和写入的字符数和CPU的信息
-V: 显示版本信息
-x: 显示详细信息
-p:[磁盘] 显示磁盘和分区的情况

DEMO

iostat

$:   iostat
Linux 4.18.0-22-generic (zy)    2022年07月27日  _x86_64_        (16 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.03    0.00    0.03    0.04    0.00   99.89

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0             0.00         0.00         0.00        115          0
loop1             0.00         0.01         0.00        508          0
loop2             0.00         0.02         0.00       1128          0
loop3             0.00         0.00         0.00        115          0
loop4             0.23         0.24         0.00      17434          0
loop5             0.00         0.00         0.00        121          0
loop6             0.00         0.00         0.00         46          0
loop7             0.00         0.00         0.00        121          0
sda              45.83        18.15       250.56    1310081   18085021
loop8             0.00         0.01         0.00        524          0
loop9             0.00         0.02         0.00       1164          0
loop10            0.00         0.01         0.00       1048          0
loop11            0.01         0.03         0.00       1991          0
loop12            0.00         0.00         0.00        351          0
loop13            0.00         0.01         0.00        524          0
loop14            0.00         0.00         0.00        348          0
loop15            0.00         0.01         0.00        504          0
loop16            0.00         0.00         0.00         46          0

cpu属性值说明:

%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比

如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

disk属性值说明:

磁盘名称
device:磁盘名称
tps:每秒钟发送到的I/O请求数.
Blk_read/s:每秒读取的block数.
Blk_wrtn/s:每秒写入的block数.
Blk_read:读入的block总数.
Blk_wrtn:写入的block总数.

iostat -m

以M为单位显示所有信息

iostat -d sda

显示指定硬盘信息

iostat -d -k 1 1

查看TPS和吞吐量信息

监控、收集和汇报系统活动 - sar

ABSTART

全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。

FORMAT

sar [ 选项 ] [ <时间间隔> [ <次数> ] ]

EXPLAIN

-A:所有报告的总和

-b:显示I/O和传递速率的统计信息

-B:显示换页状态

-d:输出每一块磁盘的使用信息

-e:设置显示报告的结束时间

-f:从制定的文件读取报告

-i:设置状态信息刷新的间隔时间

-P:报告每个CPU的状态

-R:显示内存状态

–u:输出cpu使用情况和统计信息

–v:显示索引节点、文件和其他内核表的状态

-w:显示交换分区的状态

-x:显示给定进程的装

-r:报告内存利用率的统计信息

DEMO

sar -u 查看CPU使用情况

%user 用户空间的CPU使用

%nice 改变过优先级的进程的CPU使用率

%system 内核空间的CPU使用率

%iowait CPU等待IO的百分比

%steal 虚拟机的虚拟机CPU使用的CPU

%idle 空闲的CPU

sar -q 查看平均负载

runq-sz 运行队列的长度(等待运行的进程数,每核的CP不能超过3个)

plist-sz 进程列表中的进程(processes)和线程数(threads)的数量

ldavg-1 最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推

ldavg-5 最后5分钟的CPU平均负载

ldavg-15 最后15分钟的CPU平均负载

sar -r 查看内存使用情况

kbmemfree 空闲的物理内存大小

kbmemused 使用中的物理内存大小

%memused 物理内存使用率

kbbuffers 内核中作为缓冲区使用的物理内存大小,kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.

kbcached 缓存的文件大小

kbcommit 保证当前系统正常运行所需要的最小内存,即为了确保内存不溢出而需要的最少内存(物理内存+Swap分区)

commit 这个值是kbcommit与内存总量(物理内存+swap分区)的一个百分比的值

监控多处理器的使用情况 - mpstat

ABSTART

mpstat (multiprocessor state) 可以查看所有cpu的平均负载,也可以查看指定cpu的负载。所以mpstat其实就是主要查看CPU负载的一个工具。是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。

它是Linux性能工具集sysstat中的一个工具,所以我们要装上sysstat,安装方法随不同的系统略有不同,sysstat是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如:CPU 使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行。

FORMAT

mpstat [-P {cpu|ALL}] [interval [count]]

EXPLAIN

-P {cpu|ALL}] 表示针对性查看某个CPU 还是全部观察

interval 相邻两次采集的间隔时间

count 采样的次数

DEMO

mpstate -P ALL 1 1

Linux 4.18.0-22-generic (zy)    2022年07月27日  _x86_64_        (16 CPU)

15时28分35秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
15时28分38秒  all    0.06    0.00    0.06    0.00    0.00    0.00    0.00    0.00    0.00   99.87
15时28分38秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
15时28分38秒    1    0.33    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.67
15时28分38秒    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
15时28分38秒    3    0.00    0.00    0.66    0.00    0.00    0.00    0.00    0.00    0.00   99.34
15时28分38秒    4    0.33    0.00    0.33    0.00    0.00    0.00    0.00    0.00    0.00   99.33
15时28分38秒    5    0.00    0.00    0.33    0.00    0.00    0.00    0.00    0.00    0.00   99.67
15时28分38秒    6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
15时28分38秒    7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
15时28分38秒    8    0.33    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.67
15时28分38秒    9    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
15时28分38秒   10    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
15时28分38秒   11    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
15时28分38秒   12    0.00    0.00    0.33    0.00    0.00    0.00    0.00    0.00    0.00   99.67
15时28分38秒   13    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
15时28分38秒   14    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
15时28分38秒   15    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

监控进程的内存使用情况 - pmap

ABSTART

pmap命令用于报告进程的内存映射关系,是Linux调试及运维一个很好的工具。

FORMAT

pmap [选项] 进程号 [...]

EXPLAIN

-x:显示扩展格式

-d:显示设备格式

-q:不显示头尾行

-V:显示指定版本

DEMO

描述信息含义

Address:  start address of map  映像起始地址
Kbytes:  size of map in kilobytes  映像大小
RSS:  resident set size in kilobytes  驻留集大小
Dirty:  dirty pages (both shared and private) in kilobytes  脏页大小
Mode:  permissions on map 映像权限: r=read, w=write, x=execute, s=shared, p=private (copy on write)  
Mapping:  file backing the map , or '[ anon ]' for allocated memory, or '[ stack ]' for the program stack.  映像支持文件,[anon]为已分配内存 [stack]为程序堆栈
Offset:  offset into the file  文件偏移
Device:  device name (major:minor)  设备名

跟踪某进程的内存占用

while true; do pmap -d 666 |tail -1;sleep 1;done

[root@localhost ~]# while true; do pmap -d 666 |tail -1;sleep 1;done
mapped: 115304K    writeable/private: 416K    shared: 28K
mapped: 115304K    writeable/private: 416K    shared: 28K
mapped: 115304K    writeable/private: 416K    shared: 28K
mapped: 115304K    writeable/private: 416K    shared: 28K
mapped: 115304K    writeable/private: 416K    shared: 28K
mapped: 115304K    writeable/private: 416K    shared: 28K
mapped: 115304K    writeable/private: 416K    shared: 28K
mapped: 115304K    writeable/private: 416K    shared: 28K
-----------------------------------

查看系统调用信息 - strace

ABSTART

strace 是一个可用于诊断、调试和教学的 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。

FORMAT

strace [-CdffhiqrtttTvVwxxy] [-I n] [-e expr]...

EXPLAIN

-tt 在每行输出的前面,显示毫秒级别的时间
-T 显示每次系统调用所花费的时间
-v 对于某些相关调用,把完整的环境变量,文件stat结构等打出来。
-f 跟踪目标进程,以及目标进程创建的所有子进程
-e 控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
-o 把strace的输出单独写到指定的文件
-s 当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是32个字节
-p 指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可。

DEMO

strace -o strace.log -tt -p 24298

进程还在运行时,通过ps命令获取其pid, 假设我们得到的pid是24298

linux 网络统计监控工具 - netstat

ABSTART

netstat 命令是一个监控 TCP / IP 网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。

FORMAT

netstat [-vWeenNcCF] [<Af>] -r

EXPLAIN

-a 或 --all

显示所有连线中的 Socket

-A <网络类型> 或 --<网络类型>

列出该网络类型连线中的相关地址

-c 或 --continuous

持续列出网络状态

-C 或 --cache

显示路由器配置的快取信息

-e 或 --extend

显示网络其他相关信息

-F 或 --fib

显示FIB

-g 或 --groups

显示多重广播功能群组组员名单

-h 或 --help

在线帮助

-i 或 --interfaces

显示网络界面信息表单

-l 或 --listening

显示监控中的服务器的 Socket

-M 或 --masquerade

显示伪装的网络连线

-n 或 --numeric

直接使用ip地址,而不通过域名服务器

-N 或 --netlink或--symbolic

显示网络硬件外围设备的符号连接名称

-o 或 --timers

显示计时器

-p 或 --programs

显示正在使用 Socket 的程序识别码和程序名称

-r 或 --route

显示 Routing Table

-s 或 --statistice

显示网络工作信息统计表

-t 或 --tcp

显示 TCP 传输协议的连线状况

-u 或 --udp

显示 UDP 传输协议的连线状况

-v 或 --verbose

显示指令执行过程

-V 或 --version

显示版本信息

-w 或 --raw

显示RAW传输协议的连线状况

-x 或 --unix

此参数的效果和指定"-A unix"参数相同

--ip 或 --inet

此参数的效果和指定"-A inet"参数相同

DEMO

列出所有端口情况

[root@xiesshavip002 ~]# netstat -a      # 列出所有端口
[root@xiesshavip002 ~]# netstat -at     # 列出所有TCP端口
[root@xiesshavip002 ~]# netstat -au     # 列出所有UDP端口

列出所有处于监听状态的 Sockets

[root@xiesshavip002 ~]# netstat -l   # 只显示监听端口
[root@xiesshavip002 ~]# netstat -lt  # 显示监听TCP端口
[root@xiesshavip002 ~]# netstat -lu  # 显示监听UDP端口
[root@xiesshavip002 ~]# netstat -lx  # 显示监听UNIX端口

显示每个协议的统计信息

[root@xiesshavip002 ~]# netstat -s     # 显示所有端口的统计信息[root@xiesshavip002 ~]# netstat -st    # 显示所有TCP的统计信息[root@xiesshavip002 ~]# netstat -su    # 显示所有UDP的统计信息

显示 PID 和进程名称

[root@xiesshavip002 ~]# netstat -p

显示核心路由信息

[root@xiesshavip002 ~]# netstat -rKernel IP routing tableDestination     Gateway         Genmask         Flags   MSS Window  irtt Ifacedefault         gateway         0.0.0.0         UG        0 0          0 eth0192.168.130.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0
[root@xiesshavip002 ~]# netstat -rn   # 显示数字格式,不查询主机名称
Kernel IP routing tableDestination     Gateway         Genmask         Flags   MSS Window  irtt Iface0.0.0.0         192.168.130.1   0.0.0.0         UG        0 0          0 eth0192.168.130.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0[root@xiesshavip002 ~]#

查看端口和服务

[root@xiesshavip002 ~]# netstat -antp | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      734/sshd            
tcp        0     52 192.168.130.20:22       119.129.118.189:58737   ESTABLISHED 1846/sshd: root@pts tcp6       0      0 :::22                   :::*                    LISTEN      734/sshd            
[root@xiesshavip002 ~]# netstat -antp | grep 22tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      734/sshd            tcp        0     52 192.168.130.20:22       119.129.118.189:58737   ESTABLISHED 1846/sshd: root@pts tcp6       0      0 :::22                   :::*                    LISTEN      734/sshd       

网络数据包分析工具 - tcpdump

ABSTART

tcpdump全称:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

Tcpdump打印出一个与布尔表达式匹配的网络接口上数据包内容的描述。它也可以用-w标志运行,这会导致它将分组数据保存到一个文件中供以后分析,和/或使用-r标志,这会导致它从保存的分组文件中读取,而不是读取分组从网络界面。在任何情况下,只有匹配表达式的数据包才会被tcpdump处理。

如果Tcpdump没有运行-c标志,它将继续捕获数据包,直到它被一个SIGINT信号(例如,通过输入中断字符,通常为control-C)或一个SIGTERM信号(通常由kill(1)命令); 如果使用-c 标志运行,它将捕获数据包,直到它被SIGINT或SIGTERM信号中断或指定的数据包已被处理。

当tcpdump完成捕获包时,它会报告计数:

  • 数据包“捕获”(这是tcpdump接收和处理的数据包数量);

  • (这个意思取决于你正在运行tcpdump的操作系统,可能在操作系统的配置方式上 - 如果在命令行中指定了某个过滤器,则在某些操作系统上无论它们是否与过滤器表达式匹配,即使它们与过滤器表达式匹配,无论tcpdump是否已经读取并处理它们,在其他OS上,它都只计算由过滤器表达式匹配的数据包,而不管tcpdump是否已经读取并处理了它们,而在其他操作系统上,它只计算由过滤器表达式匹配并由tcpdump处理的数据包;

  • 数据包“由内核丢弃”(如果操作系统将该信息报告给应用程序,则这是由于运行tcpdump的操作系统中的数据包捕获机制,由于缺少缓冲区空间而丢弃的数据包数量;如果不是,则报告为0)。

在支持SIGINFO信号的平台上,例如大多数BSD(包括Mac OS X)和Digital / Tru64 UNIX,它会在接收到SIGINFO信号(例如,通过输入“状态”字符,通常是control-T,尽管在一些平台上,比如Mac OS X,“status”字符默认没有设置,所以你必须使用stty(1)来设置它),并且将继续捕获数据包。

FORMAT

tcpdump [ -AdDefIKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
[ -C file_size ] [ -G rotate_seconds ] [ -F file ]
[ -i interface ] [ -m module ] [ -M secret ]
[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ]
[ -E spi@ipaddr algo:secret,... ]
[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] [ expression ]

EXPLAIN

-A     在ASCII中打印每个数据包(减去其链接级别标题)。方便捕捉网页。

-B     将操作系统捕获缓冲区大小设置为buffer_size。

-c     收到计数包后退出。

 

-C     在将一个原始数据包写入一个保存文件之前,检查该文件当前是否大于file_size,如果是,关闭当前的保存文件并打开一个新文件。第一个保存文件后的保存文件将具有用-w标志指定的名称,后面跟着一个数字,从1开始并继续向上。file_size的单位是数百万字节(1,000,000字节,而不是1,048,576字节)。请注意,与-Z选项(默认情况下启用)一起使用时,在打开第一个savefile之前会删除权限。

 

-d     将已编译的数据包匹配代码以可读的形式转储到标准输出并停止。

-dd     将数据包匹配代码转储为C程序片段。

-ddd     将数据包匹配代码转储为十进制数(以count开头)。

 

-D     打印系统上可用的网络接口列表以及哪个tcpdump可以捕获数据包。对于每个网络接口,都会打印一个编号和一个接口名称(可能后跟接口的文本描述)。可以将接口名称或编号提供给-i标志以指定要捕获的接口。这对于没有命令列出的系统是有用的(例如,Windows系统,或缺少ifconfig -a的 UNIX系统); 在Windows 2000和更高版本的系统中,该接口名称是一个有点复杂的字符串。该-D如果标志将不被支持的tcpdump与旧版本的内置的libpcap缺少该函数pcap_findalldevs() 函数。

 

-e     在每个转储线上打印链接级别标题。

 

-E     使用spi @ ipaddr algo:secret来解密寻址到addr并包含安全参数索引值spi的 IPsec ESP数据包。这种组合可以用逗号或换行符来重复。

请注意,目前支持为IPv4 ESP数据包设置密码。
算法可能是des-cbc,3des-cbc,blowfish-cbc,rc3-cbc,cast128-cbc,或者没有。缺省值是des-cbc。解密数据包的能力只有在使用加密技术编译tcpdump时才存在。
秘密是ESP密钥的ASCII文本。如果前面有0x,那么将读取一个十六进制值。
该选项采用RFC2406 ESP,而不是RFC1827 ESP。该选项仅用于调试目的,并且不鼓励使用具有真“秘密”密钥的该选项。通过在命令行上显示IPsec密钥,您可以通过ps(1)和其他场合使其他人看到它。
除了上面的语法之外,语法文件名可以用来让tcpdump读取提供的文件。文件在接收到第一个ESP数据包时打开,所以tcpdump可能已经被赋予的任何特殊权限应该已经被放弃了。
 

-f     打印'外国'的IPv4地址数字而不是象征性的(这个选项是为了解决Sun的NIS服务器严重的脑损伤 - 通常它会永久性地翻译非本地的互联网号码)。

对“外部”IPv4地址的测试使用捕获正在进行的接口的IPv4地址和网络掩码完成。如果该地址或网络掩码不可用,则可能是因为要执行捕获的接口没有地址或网络掩码,或者因为捕获是在可以在多个接口上捕获的Linux“any”接口上完成的,此选项将无法正常工作。
 

-F     使用文件作为过滤器表达式的输入。在命令行上给出的附加表达式将被忽略。

 

-G     如果指定,则每rotate_seconds秒旋转使用-w选项指定的转储文件。保存文件将具有由-w指定的名称,该名称 应包含由strftime(3)定义的时间格式。如果没有指定时间格式,则每个新文件都将覆盖前一个。如果与-C选项一起使用,则文件名将采用“ file <count>”的形式。

 

-i     在界面上听。如果未指定,则tcpdump将在系统接口列表中搜索编号最小的已配置接口(不包括环回)。选择最早的比赛会打破关系。

在具有2.2或更高版本内核的Linux系统上,可以使用“any” 接口参数来捕获所有接口的数据包。请注意,“任何”设备上的捕捉不会在混杂模式下进行。
如果支持-D标志,那么由该标志打印的接口号可以用作接口参数。
 

-I     将界面置于“监视模式”; 这仅在IEEE 802.11 Wi-Fi接口上受支持,并且仅在某些操作系统上受支持。

请注意,在监视器模式下,适配器可能会与其关联的网络分离,因此您将无法使用该适配器使用任何无线网络。这可能会阻止访问网络服务器上的文件,或者解决主机名或网络地址(如果您正在监视模式下进行捕获并且没有用另一个适配器连接到另一个网络)。
这个标志会影响-L标志的输出。如果未指定-I,则只显示不处于监视模式的可用链路层类型; 如果指定-I,则只显示在监视模式下可用的链路层类型。
 

-K     不要试图验证IP,TCP或UDP校验和。这对于在硬件中执行部分或全部这些校验和计算的接口非常有用; 否则,所有传出的TCP校验和将被标记为坏。

 

-l     使stdout行缓冲。如果您希望在捕获数据的同时查看数据,则这很有用。例如:

tcpdump -l | tee dat'' or ''tcpdump -l > dat & tail -f dat
 

-L     在指定的模式下列出接口的已知数据链路类型,然后退出。已知数据链接类型的列表可以取决于指定的模式; 例如,在某些平台上,当不处于监控模式时,Wi-Fi接口可能支持一组数据链路类型(例如,它可能仅支持伪造的以太网报头,或者可能支持802.11报头但不支持具有无线电信息的802.11报头)和另一组数据链路类型(例如,它可能支持802.11报头,或802.11报头,只有在监测模式下才有无线电信息)。

 

-m     从文件模块加载SMI MIB模块定义。这个选项可以多次使用,将几个MIB模块加载到tcpdump中。

-M     使用secret作为共享密钥,用于通过TCP-MD5选项(RFC 2385)验证TCP段中发现的摘要(如果存在)。

-n     不要将主机地址转换为名称。这可以用来避免DNS查找。

-NN     不要将协议和端口号等转换为名称。

-N     不要打印主机名的域名限定。例如,如果你给这个标志,那么tcpdump将打印“nic”而不是“nic.ddn.mil”。

-O     不要运行数据包匹配代码优化器。只有当您怀疑优化器中存在错误时,这才是有用的。

-p     不要把界面变成混杂模式。请注意,由于某些其他原因,接口可能处于混杂模式; 因此'-p'不能用作'ether host {local-hw-addr}或ether broadcast'的缩写。

-q     快(安静?)输出。打印较少的协议信息,所以输出行较短。

-R     假设ESP / AH数据包基于旧规范(RFC1825至RFC1829)。如果指定,tcpdump将不会打印重播预防字段。由于ESP / AH规范中没有协议版本字段,因此tcpdump无法推导出ESP / AH协议的版本。

-r     从文件中读取数据包(使用-w选项创建)。如果文件是“ - ”,则使用标准输入。

-S     打印绝对的,而不是相对的TCP序列号。

 

-s     SNARF snaplen有从每个分组而不是65535个字节的缺省数据的字节。由于快照有限而截断的数据包在输出中用''[|表示 proto ]'',其中proto是发生截断的协议级别的名称。请注意,采用较大的快照既增加了处理数据包所需的时间,也有效地减少了数据包缓冲的数量。这可能会导致数据包丢失。您应该将snaplen限制为捕获您感兴趣的协议信息的最小数目。将snaplen设置为0会将其设置为缺省值65535,以便与最近较早版本的tcpdump向后兼容。

 

-T     由“ 表达式 ” 选择的强制数据包被解释为指定的类型。目前已知的类型是aodv(Ad-hoc按需距离矢量协议),cnfp(Cisco NetFlow协议),rpc(远程过程调用),rtp(实时应用协议),rtcp (实时应用控制协议)snmp(简单网络管理协议),tftp(普通文件传输协议),vat(视频音频工具)和wb(分布式白板)。

 

-t     不要在每个转储线上打印时间戳。

-tt    在每个转储线上打印未格式化的时间戳。

-ttt     在每个转储线上打印当前行和前一行之间的增量(微秒分辨率)。

-tttt     在每个转储线上打印默认格式的时间戳,并按日期打印。

-ttttt     在每个转储线上打印当前行和第一行之间的增量(微秒分辨率)。

-u     打印未解码的NFS句柄。

 

-U     通过-w选项“packet-buffered” 保存输出; 即当每个数据包被保存时,它将被写入输出文件,而不是仅在输出缓冲器填充时被写入。该-U如果标志将不被支持的tcpdump与旧版本的内置的libpcap是缺乏pcap_dump_flush() 函数。

 

-v     解析和打印时,产生(略多)详细的输出。例如,打印IP包中的生存时间,标识,总长度和选项。还启用额外的数据包完整性检查,例如验证IP和ICMP头校验和。使用-w选项写入文件时,请每隔10秒报告捕获的数据包数量。

 

-vv     更详细的输出。例如,从NFS回复数据包打印附加字段,SMB数据包完全解码。

-vvv     更详细的输出。例如,telnet SB ... SE选项全部打印。使用-X Telnet选项也以十六进制打印。

-w     将原始数据包写入文件,而不是解析并打印出来。他们以后可以用-r选项打印。如果文件是“ - ”,则使用标准输出 。有关文件格式的说明,请参阅pcap-savefile(5)。

 

-W     与-C选项一起使用时,这会将创建的文件数量限制为指定的数字,并从头开始覆盖文件,从而创建“旋转”缓冲区。另外,它将命名带有足够前导0的文件以支持最大数量的文件,使它们能够正确排序。与-G选项一起使用时,这将限制创建的旋转转储文件的数量,在达到限制时以状态0退出。如果与-C一起使用,则行为将导致每个时间片的循环文件。

 

-X     解析和打印时,除了打印每个数据包的标题外,还要以十六进制格式打印每个数据包的数据(减去其链接级别标题)。整个数据包或snaplen字节中的较小者将被打印。请注意,这是整个链路层数据包,因此对于填充的链路层(例如以太网),当高层数据包比所需的填充数据更短时,也会打印填充字节。

 

-xx     解析和打印时,除了打印每个数据包的标题外,还要以十六进制格式打印每个数据包的数据,包括其链接级别标题。

-X     解析和打印时,除了打印每个数据包的标题之外,还要以十六进制和ASCII格式打印每个数据包的数据(减去其链接级别标题)。这对分析新协议非常方便。

-XX     解析和打印时,除打印每个数据包的标题外,还要以十六进制和ASCII格式打印每个数据包的数据,包括其链接级别标题。

-y     设置数据链路类型,而捕捉包中使用datalinktype。

 

-z     与-C或-G选项一起使用,这将使tcpdump运行“ 命令文件 ”,其中文件是每次旋转后关闭的保存文件。例如,指定-z gzip或-z bzip2将使用gzip或bzip2压缩每个保存文件。

请注意,tcpdump将与捕获并行地运行命令,使用最低优先级,这样不会干扰捕获过程。
如果你想使用一个本身带有标志或不同参数的命令,你总是可以编写一个shell脚本,将savefile的名字作为唯一的参数,使标志和参数安排并执行你想要的命令。
 

-Z     删除权限(如果是root)并将用户标识更改为用户,将组标识更改为主要用户组。这种行为默认是启用的(-Z tcpdump),可以通过-Z root来禁用。

DEMO

tcpdump --i eth0 port <port> -A

观察eth0网卡 port端口的详细信息

远程登陆服务的标准协议 - telnet

ABSTART

telnet是一种登录远程主机的标准协议;主要用来登录远程主机并能够执行主机的一些命令,还可以用来测试网络服务的连通性。

telnet连通性只能测试tcp端口或服务,不能测试udp

FORMAT

telnet [-4] [-6] [-8] [-E] [-L] [-a] [-d] [-e char] [-l user]
        [-n tracefile] [ -b addr ] [-r] [host-name [port]]
telnet [-468ELadr] [-S tos] [-b address] [-e escapechar] [-l user] [-n tracefile] [host [port]]。

EXPLAIN

无指定内容的参数
-4      Force IPv4 address resolution.
-6      Force IPv6 address resolution.
-8      允许使用8位字符资料,包括输入与输出。
-E      滤除脱离字符。
-L		允许输出8位字符资料。
-a		尝试自动登入远端系统。目前,如果远程系统支持,这将通过 NEW-ENVIRON 选项的 USER 变量发送用户名。
-K		不自动登入远端主机。
-d		启动排错模式。
-r		使用类似rlogin指令的用户界面。
-x		假设主机有支持数据加密的功能,就使用它。(在帮助信息中没有这个参数,在其他网页看到的,先放在这)

指定内容的参数
-S<服务类型>		设置telnet连线所需的IP TOS信息。
-b<主机别名>		使用别名指定远端主机名称。
-e<脱离字符>		设置脱离字符。
-l<用户名称>		指定要登入远端主机的用户名称。
-n<记录文件>		指定文件记录相关信息。
-F				使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。
-k<域名>			使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。
-X<认证形态>		关闭指定的认证形态。(在帮助信息中没有这个参数,在其他网页看到的,先放在这)

指定目标
host		目标IP地址
port		目标端口

DEMO

探测目标服务器IP 的某个端口是否开启

获取实时网络统计信息 - iptraf

ABSTART

iptraf 命令是基于 ncurses 的 IP LAN 监视器,它生成各种网络统计信息,包括 TCP 信息、UDP 计数、ICMP 和 OSPF 信息,以太网负载信息,节点统计信息,IP 校验和错误等。

FORMAT

iptraf { [ -f ] [ -q ] [ { -i iface | -g | -d iface | -s iface | -z iface | -l iface } [ -t timeout ] [ -B [ -L logfile ] ] ] | [ -h ] }

EXPLAIN

-d  #允许您立即启动指定接口上的详细信息(iface)
-z  #显示指定接口上的数据包计数大小
-i  #立即在指定接口启动IP流量监视器
-u  #允许使用不受支持的接口作为以太网设备
-g  #立即启动常规接口统计

DEMO

立即显示指定接口上的详细信息:iptraf-ng -d ens33

显示网络接口带宽使用情况 - iftop

ABSTART

iftop 是 Linux 系统一个免费的网卡实时流量监控工具,类似于 top 命令。iftop 可以监控指定网卡的实时流量、端口连接信息、反向解析 IP 等,还可以精确显示本机网络流量及网络内各主机和本机相互通信的流量集合,非常适合于监控代理服务器或路由器的网络流量。

同时,iftop 对检测流量异常的主机非常有效,通过 iftop 的输出可以迅速定位主机流量异常的根源,这对于网络故障排查、网络安全检测是十分有用的。缺点就是无报表功能,且必须以 root 身份才能运行。

FORMAT

iftop -h | [-npblNBP] [-i interface] [-f filter code]
                               [-F net/mask] [-G net6/mask6]

EXPLAIN

参数      含义
P        通过此键可切换暂停/继续显示
h        通过此键可在交互参数界面/状态输出界面之间来回切换
b        通过此键可切换是否显示平均流量图形条
B        通过此键可切换显示2秒、10秒、40秒内的平均流量
T        通过此键可切换是否显示每个连接的总流量
j/k      按j键或k键可以向上或向下滚动屏幕显示当前的连接信息
l        通过此键可打开iftop输出过滤功能,比如输入要显示的IP,按回车后,屏幕就只显示与这个IP相关的流量信息
L        通过此键可切换显示流量刻度范围,刻度不同,流量图形条会跟着变化
q        通过此键可退出iftop流量监控界面
n        通过此键可使iftop输出结果以IP或主机名的方式显示
s        通过此键可切换是否显示源主机信息
d        通过此键可切换是否显示远端目标主机信息
t        通过此键可切换iftop显示格式,连续按此键可依次显示:以两行显示发送接收流量、以一行显示发送接收流量、只显示发送流量/接收流量
N        通过此键可切换显示端口号/端口号对应服务名称
S        通过此键可切换是否显示本地源主机的端口信息
D        通过此键可切换是否显示远端目标主机的端口信息
p        通过此键可切换是否显示端口信息
1/2/3    根据最近 2 秒、10 秒、40 秒的平均网络流量排序
<        通过此键可根据左边的本地主机名或IP地址进行排序
>        通过此键可根据远端目标主机的主机名或IP地址进行排序
o        通过此键可切换是否固定显示当前的连接

DEMO

查找流量大户

$ iftop -i eth0 -nNB -m 10M
-i 指定网卡,
-n 代表主机通过ip显示不走DNS
-N 只显示连接端口号,不显示端口对应的服务名称(不加会显示如ssh这样的服务名称,不便于排查)
-B 指定显示单位为Kb,默认是bit,太小!
-m 设置输出界面中最上面的流量刻度最大值,流量刻度分5个大段显示

按下 L 显示流量刻度
L 参数直接显示进度条,方便人类阅读。

按下 T 显示总量

按下 3,根据最近 40s 统计排序

按下 t,发送和接受合成一行

多按几次 B,查看最近 2s、10s、40s 的统计

筛选指定 IP 172.17.1.158

回车后生效

按下 p, 根据端口号显示

 

 

  • 1
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ym影子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值