Analysis and Tools【Linux性能分析与工具】

239 阅读18分钟

问题讨论

在进行云计算项目的开发时,开发人员与Linux服务器进行交互是必要的。除了掌握常用的Linux命令外,还需对Linux服务器的性能分析命令。假如在开发时,出现连接Linux服务器的SSH,即22端口经常性的断开连接问题,还有进程拥堵问题等。这些涉及Linux系统的问题,在代码层面是无法检测的。上诉的问题可能是在连接ssh客户端时,未及时的close(),导致进程拥堵。为了证实和解决这些系统层面的问题,掌握关于Linux性能分析和工具解决的命令是很必要的。Linux Performance Analysis and Tools【Linux性能分析和工具】就是关于这个体系的。

Linux Performance 网站

如果你能看明白这个图,就说明你已经学会了:

image.png

Analysis and tools 命令大全

Linux性能分析工具有很多,常用的工具有下述几个:

  • vmstat:用于监控系统整体的虚拟内存统计信息,包括CPU、内存、磁盘、进程等。
  • iostat:用于监控磁盘I/O性能,包括磁盘吞吐量、响应时间、I/O队列长度等。
  • dstat: 是第三方的工具,功能是vmstat与iostat的结合,展示效果好一些。
  • top:用于实时监视系统的进程和资源使用情况,包括CPU、内存等。
  • sar:一个系统活动报告工具。用于收集和报告系统各项资源的历史数据。可以观测一个系统在长时间的运行情况。
  • strace:用于跟踪和调试进程的系统调用和信号,可以帮助定位进程的问题。
  • tcpdump:常用的网络抓包工具,可以在计算机上捕获和分析网络数据包。
1.vmstat 3 5

解释:当在Linux系统终端时运行该命令,将提供关于系统虚拟机内存统计的输出。3表示每隔三秒收集一次数据;5表示总共收集5次数据。每一行记录表示每隔三秒的内存统计信息的变化。

[root@server83 ~]# vmstat 3 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0  33536 487316   2096 13504744    0    0     4    13    1    2  1  1 98  0  0
 0  0  33536 487236   2096 13504796    0    0     0    10 1590 2180  1  1 98  0  0
 0  0  33536 485852   2096 13504872    0    0     0   141 1746 2435  1  1 98  0  0
 0  0  33536 485912   2096 13504872    0    0     0    12  715 1077  0  0 99  0  0
 0  0  33536 486408   2096 13504944    0    0     0   180  810 1166  1  0 99  0  0

  • procs:表示系统中进程数量,包括r和b。
r表示系统中的活动进程数量.
b表示正在等待CPU调度的进程数量.
  • memory:显示系统内存的使用情况。包括swpd、free、buff、cache。
swpd:表示已经被换出到交换空间的内存大小。
free:表示未被使用的内存大小。
buff:表示用作缓冲区的内存大小。
cache:表示用作缓冲的内存大小。
  • swap:提供了关于系统交换分区使用情况的统计信息,包括si、so。
si:表示从磁盘读取数据到交换分区的速率。
so:表示从交换分区写入到磁盘的速率。
  • io:展示块设备I/O操作的统计信息
bi:表示每秒从块设备读取的块数。
bo:表示每秒向块设备写入的块数。
  • system:
in:表示每秒中断的数量。
cs:表示每秒上下文切换的数量。
  • cpu:显示了CPU使用率和负载情况
us:表示用户态的CPU时间占比。
sy:表示系统态的CPU时间占比。
id:表示空闲的CPU时间占比。
wa:表示等待IO完成的CPU时间占比。
st:表示由于运行在虚拟机上的其他操作,而被偷取的CPU时间占比。

对vmstat的各个参数进行讲解:

[root@localhost hang]# vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 601356 473556 563156    0    0   914    47  147  548  3  3 91  3  0
[root@localhost hang]# vmstat 3 5 -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 601416 473556 563156    0    0   899    46  145  541  3  3 91  3  0
 0  0      0 601416 473556 563172    0    0     0     0   34   65  0  0 100  0  0
 1  0      0 601292 473556 563140    0    0     0     0   42   82  0  0 99  0  0
 0  0      0 601292 473556 563168    0    0     0     0   29   57  0  0 100  0  0
 0  0      0 601292 473556 563168    0    0     0     0   34   61  0  0 100  0  0

解释:a参数表示显示所有的活动和非活动内存区域的详细信息,默认为a
[root@localhost hang]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
sr0        0      0       0       0      0      0       0       0      0      0
sda    12384      2 1204695  121093   3418    444   61538    1433      0     44

解释:-d表示显示磁盘活动的统计信息。
分析:disk表示磁盘设备的名称;reads表示读取,writes表示写入,IO表示IO流。至于ms、total、merged、sectors等字段,是很底层的数据信息,如果有兴趣,可以查阅官网资料。

[root@localhost hang]# vmstat -w -t
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu-------- -----timestamp-----
 r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st                 PDT
 2  0            0       595340         2084       676860    0    0   445    23   89  300   2   2  95   1   0 2023-06-29 19:53:56

解释:-w表示以宽输出,就是输出信息宽一些。-t表示加上时间戳信息,每一行信息都有时间记录。
2.iostat 3 5

解释:参数3和5同上。iostat是一个用于监视系统输入、输出的实时程序。提供了关于磁盘、CPU和网络等方面的性能统计信息。

[root@localhost hang]# iostat 3 2
Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 	06/29/2023 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.15    0.03    1.15    1.01    0.00   96.66

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               8.34       314.82        16.67     602563      31912

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.33    0.00    0.00    0.00    0.00   99.67

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0

-   操作系统版本:Linux 3.10.0-957.el7.x86_64
-   主机名:localhost.localdomain
-   当前日期:06/29/2023
-   系统架构:x86_64
-   CPU核心数:1

平均CPU利用率:

-   %user:用户态CPU使用率为1.15%
-   %nice:优先级较高的任务使用的CPU使用率为0.03%
-   %system:内核态CPU使用率为1.15%
-   %iowait:等待I/O完成的CPU使用率为1.01%
-   %steal:被虚拟化环境偷取的CPU使用率为0.00%
-   %idle:空闲CPU的使用率为96.66%

磁盘设备统计:

-   设备:sda
-   tps:每秒传输的操作数为8.34个
-   kB_read/s:每秒读取的数据量为314.82 KB
-   kB_wrtn/s:每秒写入的数据量为16.67 KB
-   kB_read:总共读取的数据量为602,563 KB
-   kB_wrtn:总共写入的数据量为31,912 KB
3. dstat -cdlmnpsy

上诉的统计信息看着不舒服,可以借助dstat工具。先使用yum去安装dstat工具。

sudo yum install dstat

[root@localhost hang]# yum install dstat
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.sjtu.edu.cn
 * extras: ftp.sjtu.edu.cn
 * updates: ftp.sjtu.edu.cn
base                                                                                                                   | 3.6 kB  00:00:00     
docker-ce-stable                                                                                                       | 3.5 kB  00:00:00     
extras                                                                                                                 | 2.9 kB  00:00:00     
updates                                                                                                                | 2.9 kB  00:00:00     
updates/7/x86_64/primary_db                                                                                               |  22 MB  00:00:16     
Resolving Dependencies
--> Running transaction check
---> Package dstat.noarch 0:0.7.2-12.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================================
 Package                         Arch                             Version                                   Repository                      Size
=================================================================================================================================================
Installing:
 dstat                           noarch                           0.7.2-12.el7                              base                           163 k

Transaction Summary
=================================================================================================================================================
Install  1 Package

Total download size: 163 k
Installed size: 752 k
Is this ok [y/d/N]: y
Downloading packages:
dstat-0.7.2-12.el7.noarch.rpm                                                                                             | 163 kB  00:00:06     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : dstat-0.7.2-12.el7.noarch                                                                                                     1/1 
  Verifying  : dstat-0.7.2-12.el7.noarch                                                                                                     1/1 

Installed:
  dstat.noarch 0:0.7.2-12.el7                                                                                                                    

Complete!

安装好dstat后,即可使用命令

[root@localhost hang]# dstat -cdlmnpsy
'----total-cpu-usage---- -dsk/total- ---load-avg--- ------memory-usage----- -net/total- ---procs--- ----swap--- ---system--
usr sys idl wai hiq siq| read  writ| 1m   5m  15m | used  buff  cach  free| recv  send|run blk new| used  free| int   csw 
  1   1  97   1   0   0| 268k   67k|0.10 0.07 0.06| 778M 2084k  805M  234M|   0     0 |0.0   0 3.3|   0  2049M|  73   195 
  0   0 100   0   0   0|   0     0 |0.09 0.07 0.06| 778M 2084k  805M  234M|  60B 1346B|  0   0   0|   0  2049M|  40    88 
  0   0 100   0   0   0|   0     0 |0.09 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  45    86 
  0   1  99   0   0   0|   0     0 |0.09 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  49    98 
  0   0 100   0   0   0|   0     0 |0.09 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  61   106 
  0   0 100   0   0   0|   0     0 |0.09 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  68   124 
  0   0 100   0   0   0|   0     0 |0.08 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  53    93 
  0   0 100   0   0   0|   0     0 |0.08 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  51    97 
  0   0 100   0   0   0|   0     0 |0.08 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  53    98 
  0   0 100   0   0   0|   0     0 |0.08 0.07 0.06| 778M 2084k  805M  234M| 120B  574B|  0   0   0|   0  2049M|  53    98 
  0   0 100   0   0   0|   0     0 |0.08 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  50   100 
  1   0  99   0   0   0|   0     0 |0.08 0.07 0.06| 778M 2084k  805M  234M| 660B  514B|  0   0   0|   0  2049M|  56   109 
  0   0 100   0   0   0|   0     0 |0.08 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  34    74 
  0   1  99   0   0   0|   0     0 |0.08 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  40    84 
  0   0 100   0   0   0|   0     0 |0.08 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  37    75 
  0   0 100   0   0   0|   0     0 |0.08 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  45    92 
  0   0 100   0   0   0|   0     0 |0.07 0.07 0.06| 778M 2084k  805M  234M|  60B  514B|  0   0   0|   0  2049M|  31    72 

彩色标记,实时的抓取统计信息。代表的字段跟上述iostat与vmstat是一致的。

4.top

解释:top用于查看系统的实时性能数据,包括CPU使用率、内存使用情况、进程状态等。主要是进程使用情况。终端输入top后,会进入到进程信息实时监控,使用ctrl + c即可退出。

[root@localhost hang]# top
top - 22:16:41 up  2:45,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 195 total,   1 running, 194 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1863224 total,   243380 free,   648468 used,   971376 buff/cache
KiB Swap:  2098172 total,  2098172 free,        0 used.   960748 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                     
  8434 hang      20   0  566640  25952  19120 S  0.3  1.4   0:08.02 vmtoolsd                                                                    
 10547 root      20   0       0      0      0 S  0.3  0.0   0:00.41 kworker/0:0                                                                 
     1 root      20   0  128176   6892   4188 S  0.0  0.4   0:02.10 systemd                                                                     
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                                                    
     3 root      20   0       0      0      0 S  0.0  0.0   0:00.31 ksoftirqd/0                                                                 
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                                                                
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0                                                                 
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh                                                                      
     9 root      20   0       0      0      0 S  0.0  0.0   0:00.57 rcu_sched                                                                   
    10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain                                                               
    11 root      rt   0       0      0      0 S  0.0  0.0   0:00.04 watchdog/0                                                                  
    13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs                                                                   
    14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns                                                                       
    15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd                                                                  
    16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback                                                                   
    17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd                                                                 
    18 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset                                                                      
    19 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset                                                                      
    20 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset                                                                      
    21 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kblockd                                                                     
    22 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 md                                                                          
    23 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 edac-poller                                                                 
    24 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 watchdogd   
top - 22:16:41 up  2:45,  2 users,  load average: 0.00, 0.01, 0.05
反馈了时间信息:本虚拟机在启动时计时已经运行了2:45。系统有2个用户;任务负载的平均值是0.00,0.01,0.05
Tasks: 195 total,   1 running, 194 sleeping,   0 stopped,   0 zombie
反馈了总共有195个进程,其中在运行的进程只有1个,其余194个进程在休眠,0个停止的进程,0个僵尸进程
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
反馈了CPU的使用率和空闲率。us表示用户空间占用CPU的百分比,这里用户占用了0.3%。sy表示系统内核空间占用CPU的百分比,这里系统占用了0.3%。id表示CPU的空闲率,这里CPU空闲率为99.3%。至于wa、hi、si、st不常见,就不去了解了。若有兴趣可以查阅资料。
KiB Mem :  1863224 total,   243380 free,   648468 used,   971376 buff/cache
反馈了内存使用情况:KiB是内存单位;total表示总共有1863224KiB内存大小;free表示空闲的内存大小为243380KiB;被使用的648468KiB。用于缓存的971376KiB。可以看出此时我的虚拟机的内存大约于在1.8G左右。
KiB Swap:  2098172 total,  2098172 free,        0 used.   960748 avail Mem 
反馈了交换空间的使用情况:总共有2098172 KiB的交换空间,未被使用。剩余的960748 KiB可用内存。

在我们使用top命令去查询系统信息时,主要的关注点还是进程。接下来详细的讲解一下进程字段的含义:

 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND  
 
 PID:表示进程ID,是进程的唯一标识符。
 USER:表示启动该进程的是哪个用户。
 PR:表示进程的优先级。其取值范围在【-20,19】,值越低表示优先级越高,CPU就会优先的处理优先级高的进程。
 NI:进程的nice值,决定了进程的调度优先级。一般来说,NI与PR是相差20个值的。比如,pR为20,那么IN就为0;PR为0,IN就为-20.
 VIRT:进程使用的虚拟内存大小
 RES:进程使用的物理内存大小
 SHR:进程使用的共享内存大小
 %CPU:表示该进程使用CPU资源百分比
 %MEM:表示该进程使用内存资源百分比
 TIME+:表示进程累计的CPU时间
 COMMAND:表示启动该进程的命令是什么
5. sar

解释:sar用于收集和报告系统的各项资源的历史数据。它能够提供关于CPU利用率、内存利用率、磁盘IO、网络流量、进程状态等方面的信息。

[root@localhost hang]# sar
Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 	06/29/2023 	_x86_64_	(1 CPU)

07:31:37 PM       LINUX RESTART

07:40:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
07:50:01 PM     all      0.14      0.00      0.13      0.00      0.00     99.73
08:00:01 PM     all      0.08      0.00      0.11      0.02      0.00     99.79
08:10:01 PM     all      0.11      0.02      0.33      0.11      0.00     99.43
08:20:01 PM     all      0.75      0.00      0.45      1.50      0.00     97.31
08:30:01 PM     all      0.10      0.00      0.11      0.00      0.00     99.79
08:40:01 PM     all      0.09      0.00      0.09      0.00      0.00     99.82
08:50:01 PM     all      0.09      0.00      0.10      0.00      0.00     99.81
09:00:01 PM     all      0.09      0.00      0.09      0.00      0.00     99.82
09:10:01 PM     all      0.12      0.00      0.09      0.00      0.00     99.79
09:20:02 PM     all      0.09      0.00      0.09      0.00      0.00     99.82
09:30:01 PM     all      0.09      0.00      0.09      0.00      0.00     99.82
09:40:01 PM     all      0.10      0.00      0.08      0.00      0.00     99.82
09:50:01 PM     all      0.08      0.00      0.08      0.00      0.00     99.84
10:00:01 PM     all      0.08      0.00      0.08      0.00      0.00     99.83
10:10:01 PM     all      0.13      0.00      0.14      0.02      0.00     99.70
10:20:01 PM     all      0.14      0.00      0.14      0.00      0.00     99.71
10:30:01 PM     all      0.09      0.00      0.09      0.00      0.00     99.82
10:40:02 PM     all      0.09      0.00      0.09      0.00      0.00     99.82
10:50:01 PM     all      0.09      0.00      0.09      0.00      0.00     99.82
Average:        all      0.13      0.00      0.13      0.09      0.00     99.65

  • %user:表示用户空间程序使用CPU的百分比。这包括用户运行的应用程序和进程。
  • %nice:表示以较高优先级运行的用户空间程序(通常是调整过优先级的)使用CPU的百分比。
  • %system:表示内核空间程序使用CPU的百分比。这包括操作系统内核和内核进程。
  • %iowait:表示CPU等待IO操作完成的时间所占的百分比。当系统中有大量阻塞IO操作时,此值会增加。
  • %steal:表示被虚拟化环境(如虚拟机)窃取的CPU时间的百分比。这个指标在虚拟化环境中使用,并且只适用于特定情况。
  • %idle:表示CPU空闲的时间所占的百分比。

sar与一些参数的联合使用:

[root@localhost hang]# sar 1
Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 	06/29/2023 	_x86_64_	(1 CPU)

11:09:11 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:09:12 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
11:09:13 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
11:09:14 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
11:09:15 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
11:09:16 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
11:09:17 PM     all      0.00      0.00      0.98      0.00      0.00     99.02

参数: 1表示每隔一秒就会打印sar的信息。
6.strace -p {pid}

解释:strace一般与指定的进程一起使用。可以去实时的跟踪该进程执行过程中的系统调用和信号。

[root@localhost hang]# strace -p 8279
strace: Process 8279 attached
restart_syscall(<... resuming interrupted poll ...>) = 0
futex(0x1f630d0, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1f630c0, FUTEX_WAKE_PRIVATE, 1) = 1
poll([{fd=3, events=POLLIN}], 1, 4999)  = 0 (Timeout)
futex(0x1f630d0, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1f630c0, FUTEX_WAKE_PRIVATE, 1) = 1
poll([{fd=3, events=POLLIN}], 1, 4997)  = 0 (Timeout)
futex(0x1f630d0, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1f630c0, FUTEX_WAKE_PRIVATE, 1) = 1
poll([{fd=3, events=POLLIN}], 1, 4992)  = 0 (Timeout)
futex(0x1f630d0, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1f630c0, FUTEX_WAKE_PRIVATE, 1) = 1

  • restart_syscall(<... resuming interrupted poll ...>):恢复被中断的poll系统调用。
  • futex(0x1f630d0, FUTEX_WAKE_PRIVATE, 1):唤醒一个等待中的线程或进程。
  • poll([{fd=3, events=POLLIN}], 1, 4999) = 0 (Timeout):进行一次poll操作,检查文件描述符3上是否有可读事件,并设置超时时间为4999毫秒。此次调用返回值为0,表示超时结束。
7.tcpdump -i any

解释:tcpdump是一种常用的网络抓包工具,可以在计算机上捕获和分析网络数据包。它提供了强大的功能,用于检查和故障排除网络连接、监视网络流量以及进行安全分析。一般是网络安全技术方面的命令,可以了解一下。

[root@localhost hang]# tcpdump -i any
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
23:21:15.314391 IP localhost.localdomain.ssh > 192.168.182.1.50719: Flags [P.], seq 1171837498:1171837694, ack 1967326365, win 274, length 196
23:21:15.314484 IP 192.168.182.1.50719 > localhost.localdomain.ssh: Flags [.], ack 196, win 4095, length 0

tcpdump -i any 中,any表示当前系统上的所有网络接口;可以把any换成eth0.

还记得文章开始处的那张图片吗?现在回头去看那个图片,应该是能看明白一些了。如果你能理解那张图片上的所有命令,那你就是大佬了哟。

讲解图

在图中的方框内,有Applications、System Libraies、System Call interface、VFS、Sockets、Scheduler、File Systems、TCP/UDP、Volume Manager、IP、Block Device、Net Device、Virtual Memory、Device Drivers模块。

总结

还是点个赞吧,我也整理了许久的。

希望你们能带走这篇文章的知识点,而不是字节流~~~