2018-06-08 第十三课 课后笔记

预习内容

10.1 使用w查看系统负载
10.2 vmstat命令
10.3 top命令
10.4 sar命令
10.5 nload命令
10.6 监控io性能
10.7 free命令
10.8 ps命令
10.9 查看网络状态
10.10 linux下抓包
10.11 Linux网络相关

 10.1 使用w查看系统负载

[root@localhost ~]# w
 13:06:19 up 0 min,  2 users,  load average: 0.99, 0.24, 0.08
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1      13:06   11.00s  0.04s  0.04s -bash
root     pts/0     13:06    3.00s  0.07s  0.02s w

使用w命令可以查看当前系统的负载,第一行从左至右显示信息为:时间、系统运行时间、登录用户数、平均负载。从第二行开始的所有的行是当前登录的用户名及其登录地址。最应该关注的是第一行中的load average后面的三个数值。

第一个数值是表示1分钟内系统的平均负载值,第二个数值表示5分钟内系统的平均负载值,第三个数值表示15分钟内系统的平均负载值,我们着重看第一个值,他表示单位时间段内使用cpu的活动进程数,值越大就说明服务器压力越大。一般情况下,这个值只要不超过服务器的CPU数量就没有关系,如果服务器的CPU数量为8,那么值小于8就说明当前服务器没有压力,否则就需要关注一下了。

  • 查看服务器的cpu的方法如下:
[root@localhost ~]# cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 58
model name	: Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz
stepping	: 9
microcode	: 0x15
cpu MHz		: 1795.939
cache size	: 3072 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb xsaveopt pln pts dtherm fsgsbase smep
bogomips	: 3591.87
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management:

上例中,/proc/cpuinfo这个文件记录了cpu的详细信息,目前市场上的服务器有很多是2颗多核cpu,在linux看来,他就是2*n个cpu,假如n是4,则查看这个文件时会显示8段类似的信息,而最后一段信息的processor:后面会显示7,所以查看当前系统下有几个cpu,我们还可以使用命令grep -c ‘processo‘ /proc/cpuinfo

[root@localhost ~]# grep -c 'processor' /proc/cpuinfo
1

 

10.2 vmstat命令 

使用命令w可以查看系统整体的负载,通过看那个数值可以知道当前系统有没有压力,但它无法判断具体是哪里(CPU 内存 磁盘等)有压力,所以就用到了vmstat。vmstat命令打印的结果分为6个部分procs -memory-swap-io-system-cpu。我们重点关注一下r  b si   so    bi    bo这几列。

[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 800968    692  79196    0    0    89     7   49   83  0  1 98  0  0

proc显示进程的相关信息

  1. r(run):表示运行或等待cpu时间片的进程数,不要误认为等待cpu时间片就是意味着这个进程没有运行。实际上某一个时刻1个cpu只能有一个进程占用,其他进程只能排着队等着。此时这些排队等待cpu资源的进程依然是运行状态。该数值如果长期大于服务器CPU的个数,则说明CPU资源不够用了
  2. b(block):表示等待资源的进程数,这个资源值得是I/O,内存等。该数值如果长时间大于1,则需要关注一下了。

memory显示内存的详细信息。

  1. swpd:表示切换到交换分区中的内存数量,单位为KB。
  2. free:表示当前空闲的内存数量,单位为KB
  3. buff:表示(即将写入磁盘的)缓冲大小,单位为KB。
  4. cache:表示(从磁盘中读取的)缓冲大小,单位为KB。

swap:显示内存的交换情况。

  1. si:表示由交换区写入内存的数据量,单位为KB
  2. so:表示由内存写入到交换区的数据量,单位KB

io:显示磁盘的使用情况。

  1. bi:表示从块设备读取数据的量(读磁盘),单位为KB
  2. bo:表示从块设备写入数据的量(写磁盘),单位为KB

system:显示采集间隔内发生的中断次数

  1. in:表示某一个时间间隔内观测到的每秒设备的中断次数
  2. cs:表示每秒产生的上下文切换次数

cpu显示CPU的使用状态

  1. us:显示用户下所花费CPU的时间百分比
  2. sy:显示系统花费CPU的时间百分比
  3. id:表示cpu处于空闲状态的时间百分比
  4. wa:表示I/O等待所占用cpu的时间百分比
  5. st:表示被偷走的cpu所占百分比(一般都为0,不用关注)

上面的参数中,主要关注的是r b 和wa这三列。io部分的bi和bo也是经常要参考的对象。如果磁盘io压力大,这两列的数值就会比较高,另外,当si和so两列的数值比较高并且不断变化时,说明内存不够了

我们使用vmstat查看系统状态时,通常都是使用如下形式:

[root@localhost ~]# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 800968    692  79228    0    0    44     3   30   47  0  1 99  0  0
 0  0      0 800944    692  79228    0    0     0     0   19   21  0  0 100  0  0
 0  0      0 800944    692  79228    0    0     0     0   18   18  0  0 100  0  0
 0  0      0 800944    692  79228    0    0     0     0   17   15  0  0 100  0  0
 0  0      0 800944    692  79228    0    0     0     0   14   12  0  1 99  0  0

这一条命令是每隔一秒输出一次状态,共输出5次。

[root@localhost ~]# vmstat 1 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 800968    692  79228    0    0    43     3   30   46  0  1 99  0  0
 0  0      0 800944    692  79228    0    0     0     0   27   24  0  1 99  0  0
 0  0      0 800944    692  79228    0    0     0     0   18   12  0  0 100  0  0
 0  0      0 800944    692  79228    0    0     0     0   19   17  0  1 99  0  0
 0  0      0 800944    692  79228    0    0     0     0   12   10  0  0 100  0  0
 0  0      0 800944    692  79228    0    0     0     0   18   21  0  0 100  0  0
^C

上面一条命令是每隔一秒输出一次状态且一直输出。

10.3 top命令 

用top命令显示进程所占的系统资源

[root@localhost ~]# top
top - 13:44:13 up 38 min,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 212 total,   2 running, 210 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:   1010860 total,   210604 used,   800256 free,      692 buffers
KiB Swap:  2097148 total,        0 used,  2097148 free.    79496 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                    
  511 root      20   0  550588  16160   5700 S  0.3  1.6   0:00.85 tuned                      
 1832 root      20   0       0      0      0 S  0.3  0.0   0:00.02 kworker/0:1                
    1 root      20   0   50868   7148   2512 S  0.0  0.7   0:02.53 systemd                    
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd                   
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.06 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.00 rcuob/0                    
   10 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/1                    
   11 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/2                    
   12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/3                    
   13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/4                    
   14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/5                    
   15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/6  

top命令用于动态监控进程所占的系统资源,每隔三秒变一次。它的特点是把占用系统资源最高的进程放到最前面。上例中,top命令打印出了很多信息,包括系统负载,进程数,cpu使用情况,内存使用情况以及交换分区使用情况,这些内容其实可以通过其他命令来查看。使用top命令是可以查看使用系统进程的详细情况。RES这一项为进程所占的内存大小,而%MEM这一项为使用内存的百分比。在top状态下,使用shift+m键可以按照内存使用大小排序,按1可以列出所有核CPU的使用状态,按q键可以退出top

  • 我们经常用到命令 top -bn1 ,它表示非动态打印系统资源的使用情况,经常在shell脚本中用到。
[root@localhost ~]# top -bn1|head -20
top - 13:52:31 up 46 min,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 213 total,   2 running, 211 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.5 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem:   1010860 total,   210792 used,   800068 free,      692 buffers
KiB Swap:  2097148 total,        0 used,  2097148 free.    79544 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
    1 root      20   0   50868   7148   2512 S  0.0  0.7   0:02.53 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.06 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.00 rcuob/0
   10 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/1
   11 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/2
   12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/3
   13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/4
   14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/5
   15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/6
  • 还有一种用法是可以查看到命令具体的路径
[root@localhost ~]# top -c
top - 16:02:34 up  2:56,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 211 total,   2 running, 209 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem:   1010860 total,   218148 used,   792712 free,      692 buffers
KiB Swap:  2097148 total,        0 used,  2097148 free.    81408 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                    
 2028 root      20   0  123776   1792   1268 R  0.3  0.2   0:00.07 top -c                     
    1 root      20   0   50868   7156   2512 S  0.0  0.7   0:02.57 /usr/lib/systemd/systemd -+
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.02 [kthreadd]                 
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.10 [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.00 [rcuob/0]                  
   10 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [rcuob/1]                  
   11 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [rcuob/2]                  
   12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [rcuob/3]                  
   13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [rcuob/4]                  
   14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [rcuob/5]                  
   15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [rcuob/6]                  
   16 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [rcuob/7]    

 

 10.4 sar命令

sar命令很强大,它可以监控系统几乎所有的资源的状态,比如平均负载、网卡流量、磁盘状态、内存使用等。与其他监控系统状态监控工具不同,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息,如果没有这个命令,使用yum install -y sysstat 安装。刚开始使用这个命令会报错,那是因为sar工具还没有生成相应的数据库文件,它的数据库文件在/var/log/sa/目录下。介绍常用二个选项

  • 查看网卡流量 sar -n DEV
[root@localhost ~]# sar -n DEV
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 	2018年06月08日 	_x86_64_	(1 CPU)
[root@localhost ~]# sar -n DEV
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 	2018年06月08日 	_x86_64_	(1 CPU)

16时10分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时20分01秒 eno16777736      0.34      0.26      0.03      0.04      0.00      0.00      0.00
16时20分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: eno16777736      0.34      0.26      0.03      0.04      0.00      0.00      0.00
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

这个命令会把当天记录的网卡信息打印出来,每隔10分钟记录一次,IFACE这一列表示设备名称。rxpck/s这一列表示每秒进入收取的包的数量,txpck/s这一列表示每秒发送出去的包的数量,rxkb/s这一列表示每秒收取的数据量,txkb/s这一列表示每秒发送的数据量。

如果有一天服务器丢包比较严重,那么久应该查一下网卡流量是否异常了,如果rxpck/s那一列的数值大于4000,或者rxkb/s的值大于5000000,很有可能被攻击了。

  • 想要实时查看网卡流量 使用sar -n DEV 1 5
[root@localhost ~]# sar -n DEV 1 5
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 	2018年06月08日 	_x86_64_	(1 CPU)

16时25分12秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时25分13秒 eno16777736      0.99      0.99      0.06      0.20      0.00      0.00      0.00
16时25分13秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

16时25分13秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时25分14秒 eno16777736      0.99      0.99      0.06      0.40      0.00      0.00      0.00
16时25分14秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

16时25分14秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时25分15秒 eno16777736      2.02      2.02      0.12      0.46      0.00      0.00      0.00
16时25分15秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

16时25分15秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时25分16秒 eno16777736      1.00      1.00      0.06      0.40      0.00      0.00      0.00
16时25分16秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

16时25分16秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时25分17秒 eno16777736      1.00      1.00      0.06      0.40      0.00      0.00      0.00
16时25分17秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

平均时间:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
平均时间: eno16777736      1.20      1.20      0.07      0.37      0.00      0.00      0.00
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
[root@localhost ~]# 
  • 我们也可以使用-f来查看某一天的网卡流量历史,后面跟文件名。
[root@localhost ~]# sar -n DEV -f /var/log/sa/sa08
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 	2018年06月08日 	_x86_64_	(1 CPU)

16时10分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
16时20分01秒 eno16777736      0.34      0.26      0.03      0.04      0.00      0.00      0.00
16时20分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: eno16777736      0.34      0.26      0.03      0.04      0.00      0.00      0.00
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
  • 查看历史负载sar -q 
[root@localhost ~]# sar -q
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 	2018年06月08日 	_x86_64_	(1 CPU)

16时10分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
16时20分01秒         1       228      0.00      0.01      0.05         0
平均时间:         1       228      0.00      0.01      0.05         0

这个命令有助于我们查看服务器在过去某个时间的负载状况。

10.5 nload命令

 使用sar可以查看网卡流量,但是不够直观,还有一个更好的工具,就是nload,安装它 yum install -y epel-release yum install -y nload

运行nload

Device eno16777736 [192.168.73.128] (1/2):
===============================================================================================
Incoming:

                                                                 Curr: 944.00 Bit/s
                                                                 Avg: 992.00 Bit/s
                                                                 Min: 936.00 Bit/s
                                                                 Max: 1.84 kBit/s
                                                                 Ttl: 5.24 MByte
Outgoing:
                                                                 Curr: 8.30 kBit/s
                                                                 Avg: 8.30 kBit/s
                                                                 Min: 4.25 kBit/s
                                                                 Max: 8.78 kBit/s
                                                                 Ttl: 606.73 kByte

最上面的一行为网卡的名字及IP地址,输出结果为二部分,Incoming:为进入网卡的流量,Outgoing:为网卡出去的流量。按键q可以退出

10.6 监控io性能

  •  使用命令iostat -x 可以查看磁盘使用

[root@localhost ~]# iostat -x
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 	2018年06月08日 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.08    0.00    0.31    0.01    0.00   99.60

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.05     0.02    0.50    0.29    12.76     6.51    48.56     0.00    2.04    1.39    3.16   0.51   0.04
scd0              0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00    3.91    3.91    0.00   3.91   0.00

我们只需要关注%util这一行的数据,它表示io等待磁盘使用占用cpu的大小,如果百分比超过50,或者更大的数字,就表示磁盘性能很慢了,可能是硬盘存在问题

  • iotop 可以查看磁盘的使用性能
Total DISK READ :	0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:	0.00 B/s | Actual DISK WRITE:       0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                         
 2140 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.02 % [kworker/0:1]
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switche~ --deserialize 23
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
  516 be/4 dbus        0.00 B/s    0.00 B/s  0.00 %  0.00 % dbus-daemon --sys~ystemd-activation
    5 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    8 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_bh]
    9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/0]
   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/1]
   11 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/2]
   12 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/3]
   13 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/4]
   14 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/5]
   15 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/6]
   16 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/7]
   17 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/8]
   18 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/9]
   19 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcuob/10]

 

 10.7 free命令

用free命令来查看内存使用状况

[root@localhost ~]# free
             total       used       free     shared    buffers     cached
Mem:       1010860     363624     647236       6844        692     216196
-/+ buffers/cache:     146736     864124
Swap:      2097148          0    2097148

free命令可以查看当前系统的总内存大小以及使用内存的情况。介绍各列的含义:

  • total:内存总大小
  • used:真正使用的实际内存大小
  • free:剩余物理内存的大小(没有被分配,纯剩余)
  • shared:共享内存大小。
  • buff/cache:分配给buffer和cache的内存总共有多大。buffer和cache都是一部分内存,内存的作用就是缓解cpu和io的速度差距的。数据经过CPU计算,即将要写入磁盘,这时用的内存为buffer,cpu要计算时,需要把数据从磁盘中读出来,临时放到内存中,这部分就是cache。
  • available:系统可使用内存有多大,它包含了free,linux系统为了让应用跑的更快,会预先分配出一部分内存(buffer/cache)给某些应用使用。虽然这部分内存没有真正的使用,但也已经分配出去了。然而,当另外一个服务要使用更多内存时,是可以把这部分预先分配的内存拿出来。所以还没有被占用的这部分buffer/cache 在加上free就是available。

这个free命令显示的结果中,其实有一个隐藏的公式:total=used+free+buff/cache。另外,available是由free这部分内存和buff/cache还未被占用的那部分内存组成。used那部分内存和buff/cache被占用的内存是没有关系的。

另外free命令还可以加-m和-g选项,打印内存的使用状况,甚至也支持-h选项

[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           987        357        629          6          0        211
-/+ buffers/cache:        146        841
Swap:         2047          0       2047
[root@localhost ~]# free -h
             total       used       free     shared    buffers     cached
Mem:          987M       357M       629M       6.7M       692K       211M
-/+ buffers/cache:       146M       841M
Swap:         2.0G         0B       2.0G
[root@localhost ~]# free -g
             total       used       free     shared    buffers     cached
Mem:             0          0          0          0          0          0
-/+ buffers/cache:          0          0
Swap:            1          0          1

 

 10.8 ps命令

在windows下只要打开任务管理器即可查看。那么在linux下如何查看呢。用前面的top命令可以查看,但是看起来没有ps命令方便。ps常用的是ps aux 

[root@localhost ~]# ps aux|head
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.7  50868  7232 ?        Ss   13:05   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
root         2  0.0  0.0      0     0 ?        S    13:05   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    13:05   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   13:05   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    13:05   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    13:05   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    13:05   0:00 [rcuob/0]
root        10  0.0  0.0      0     0 ?        S    13:05   0:00 [rcuob/1]
root        11  0.0  0.0      0     0 ?        S    13:05   0:00 [rcuob/2]

介绍几个系统进程的参数

  • PID:表示进程的PID,这个ID很有用。在linux中,内核管理进程就得靠PID来识别和管理某一个进程。比如我想终止某个进程。则用命令“kill 进程的pid”。
  • stat:进程的状态。进程状态分为以下几种
  1. D:不能中断的进程
  2. R:(run)正在运行中的进程,其中包括了等待CPU时间片的进程
  3. S(sleep):已经中断的进程。通常情况下,系统大部分进程都是这个状态
  4. T:已经停止或者暂停的进程,如果我们正在运行一个命令。比如说sleep 10,我们按一下ctrl+z暂停进程时,用ps命令查看就会显示这个状态
  5. W:没有足够的内存页分配
  6. X:已经杀死的进程。
  7. Z:僵尸进程,即杀不掉,打不死的垃圾进程,占用系统一点资源。
  8. <:高优级进程
  9. N:低优级进程
  10. s:主进程
  11. l:多线路进程
  12. +:在前台运行的进程,比如在当前终端执行ps aux就是前台进程
  • 还有一种用法就是查看某个进程的数量
[root@localhost ~]# ps aux|grep -c sshd
4
  • 可以查看某个进程用没用
[root@localhost ~]# ps aux |grep mysql
root      2450  0.0  0.0 112716   980 pts/2    R+   18:28   0:00 grep --color=auto mysql
  • 还有一种选项是-C 指定一个进程或者查看一个进程有没有
[root@localhost ~]# ps -C sshd
  PID TTY          TIME CMD
  780 ?        00:00:00 sshd
 1799 ?        00:00:00 sshd
  •  ps --no-heading -C sshd使用这个命令可以把表头去除,看起来更简洁
[root@localhost ~]# ps --no-heading -C sshd
  780 ?        00:00:00 sshd
 1799 ?        00:00:00 sshd
  • 使用命令ps -eLF命令可以查看多线程进程
[root@localhost ~]# ps -eLf|head
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
root         1     0     1  1    1 22:05 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
root         2     0     2  0    1 22:05 ?        00:00:00 [kthreadd]
root         3     2     3  0    1 22:05 ?        00:00:00 [ksoftirqd/0]
root         4     2     4  0    1 22:05 ?        00:00:00 [kworker/0:0]
root         5     2     5  0    1 22:05 ?        00:00:00 [kworker/0:0H]
root         6     2     6  0    1 22:05 ?        00:00:00 [kworker/u128:0]
root         7     2     7  0    1 22:05 ?        00:00:00 [migration/0]
root         8     2     8  0    1 22:05 ?        00:00:00 [rcu_bh]
root         9     2     9  0    1 22:05 ?        00:00:00 [rcuob/0]

 

 10.9 查看网络状态

用netstat命令查看网络状态

使用netstat -lnp查看监听端口,查看当前系统启动了那些端口

[root@localhost ~]# netstat -lnp|head -20
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1022/master         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      780/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1022/master         
tcp6       0      0 :::22                   :::*                    LISTEN      780/sshd            
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           508/avahi-daemon: r 
udp        0      0 0.0.0.0:54619           0.0.0.0:*                           508/avahi-daemon: r 
raw6       0      0 :::58                   :::*                    7           509/NetworkManager  
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     10779    1/systemd            /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     6682     1/systemd            /run/systemd/journal/stdout
unix  2      [ ACC ]     STREAM     LISTENING     17109    1022/master          public/pickup
unix  2      [ ACC ]     STREAM     LISTENING     17113    1022/master          public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     17116    1022/master          public/qmgr
unix  2      [ ACC ]     STREAM     LISTENING     17138    1022/master          public/flush
unix  2      [ ACC ]     STREAM     LISTENING     17153    1022/master          public/showq
unix  2      [ ACC ]     STREAM     LISTENING     17120    1022/master          private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     17132    1022/master          private/trac
  • 还有一个选项是netstat -an 表示打印网络连接状况
[root@localhost ~]# netstat -an |head -30
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0     52 192.168.73.128:22       192.168.73.1:59143      ESTABLISHED
tcp6       0      0 ::1:25                  :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
udp        0      0 0.0.0.0:5353            0.0.0.0:*                          
udp        0      0 0.0.0.0:54619           0.0.0.0:*                          
raw6       0      0 :::58                   :::*                    7          
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     10779    /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     6682     /run/systemd/journal/stdout
unix  5      [ ]         DGRAM                    6685     /run/systemd/journal/socket
unix  2      [ ACC ]     STREAM     LISTENING     17109    public/pickup
unix  12     [ ]         DGRAM                    6687     /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     17113    public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     17116    public/qmgr
unix  2      [ ACC ]     STREAM     LISTENING     17138    public/flush
unix  2      [ ACC ]     STREAM     LISTENING     17153    public/showq
unix  2      [ ACC ]     STREAM     LISTENING     17120    private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     17132    private/trace
unix  2      [ ACC ]     STREAM     LISTENING     17123    private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     17135    private/verify
unix  2      [ ACC ]     STREAM     LISTENING     17126    private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     17141    private/proxymap
unix  2      [ ACC ]     STREAM     LISTENING     17129    private/defer
unix  2      [ ACC ]     STREAM     LISTENING     17144    private/proxywrite
unix  2      [ ACC ]     STREAM     LISTENING     17147    private/smtp

在上面例子中我们只关注这列ESTABLISHED数值很大,表明系统很忙

使用ss -an用法类似于netstat -an 

10.10 linux下抓包

抓包工具

 tcpdump  没有这个命令使用 yum install -y tcpdump 安装

第一个选项 tcpdump -nn -i eno1677736

[root@localhost ~]# tcpdump -nn -i eno16777736
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno16777736, link-type EN10MB (Ethernet), capture size 262144 bytes
19:54:00.319494 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 536256870:536257082, ack 695499737, win 137, length 212
19:54:00.319806 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 212, win 16134, length 0
19:54:00.320138 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 212:504, ack 1, win 137, length 292
19:54:00.320421 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 504:668, ack 1, win 137, length 164
19:54:00.320600 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 668, win 16425, length 0
19:54:00.320909 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 668:944, ack 1, win 137, length 276
19:54:00.321193 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 944:1108, ack 1, win 137, length 164
19:54:00.321412 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 1108, win 16315, length 0
19:54:00.321630 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 1108:1384, ack 1, win 137, length 276
19:54:00.322046 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 1384:1548, ack 1, win 137, length 164
19:54:00.322233 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 1548, win 16205, length 0
19:54:00.322388 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 1548:1824, ack 1, win 137, length 276
19:54:00.322642 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 1824:1988, ack 1, win 137, length 164
19:54:00.322847 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 1988, win 16095, length 0
19:54:00.322994 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 1988:2264, ack 1, win 137, length 276
19:54:00.323245 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 2264:2428, ack 1, win 137, length 164
19:54:00.323415 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 2428, win 16425, length 0
19:54:00.323562 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 2428:2704, ack 1, win 137, length 276
19:54:00.323856 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 2704:2868, ack 1, win 137, length 164
19:54:00.324025 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 2868, win 16315, length 0
19:54:00.324171 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 2868:3144, ack 1, win 137, length 276
19:54:00.324418 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 3144:3308, ack 1, win 137, length 164
19:54:00.324583 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 3308, win 16205, length 0
19:54:00.324762 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 3308:3584, ack 1, win 137, length 276
19:54:00.325010 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 3584:3748, ack 1, win 137, length 164
19:54:00.325179 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 3748, win 16095, length 0
19:54:00.325323 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 3748:4024, ack 1, win 137, length 276
19:54:00.325569 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 4024:4188, ack 1, win 137, length 164
19:54:00.325768 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 4188, win 16425, length 0
19:54:00.325912 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 4188:4464, ack 1, win 137, length 276
19:54:00.326160 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 4464:4628, ack 1, win 137, length 164
19:54:00.326328 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 4628, win 16315, length 0
19:54:00.326472 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 4628:4904, ack 1, win 137, length 276
19:54:00.326753 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 4904:5068, ack 1, win 137, length 164
19:54:00.326918 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 5068, win 16205, length 0
19:54:00.327063 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 5068:5344, ack 1, win 137, length 276
19:54:00.327307 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 5344:5508, ack 1, win 137, length 164
19:54:00.327472 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 5508, win 16095, length 0
19:54:00.327615 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 5508:5784, ack 1, win 137, length 276
19:54:00.327890 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 5784:5948, ack 1, win 137, length 164
19:54:00.328057 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 5948, win 16425, length 0
19:54:00.328205 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 5948:6224, ack 1, win 137, length 276
19:54:00.328450 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 6224:6388, ack 1, win 137, length 164
19:54:00.328617 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 6388, win 16315, length 0
19:54:00.328796 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 6388:6664, ack 1, win 137, length 276
19:54:00.329041 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 6664:6828, ack 1, win 137, length 164
19:54:00.329208 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 6828, win 16205, length 0
19:54:00.329350 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 6828:7104, ack 1, win 137, length 276
19:54:00.329594 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 7104:7268, ack 1, win 137, length 164
19:54:00.329791 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 7268, win 16095, length 0
19:54:00.329934 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 7268:7544, ack 1, win 137, length 276
19:54:00.330170 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 7544:7708, ack 1, win 137, length 164
19:54:00.330335 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 7708, win 16425, length 0
19:54:00.330479 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 7708:7984, ack 1, win 137, length 276
19:54:00.330757 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 7984:8148, ack 1, win 137, length 164
19:54:00.330921 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 8148, win 16315, length 0
19:54:00.331064 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 8148:8424, ack 1, win 137, length 276
19:54:00.331322 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 8424:8588, ack 1, win 137, length 164
19:54:00.332265 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 8588, win 16205, length 0
19:54:00.332961 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 8588:8864, ack 1, win 137, length 276
19:54:00.333831 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 8864:9028, ack 1, win 137, length 164
19:54:00.334033 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 9028, win 16095, length 0
19:54:00.334199 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 9028:9304, ack 1, win 137, length 276
19:54:00.334469 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 9304:9468, ack 1, win 137, length 164
19:54:00.334688 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 9468, win 15985, length 0
19:54:00.334846 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 9468:9744, ack 1, win 137, length 276
19:54:00.335110 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 9744:9908, ack 1, win 137, length 164
19:54:00.335283 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 9908, win 15875, length 0
19:54:00.335431 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 9908:10184, ack 1, win 137, length 276
19:54:00.335698 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 10184:10364, ack 1, win 137, length 180
19:54:00.335909 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 10364, win 15761, length 0
19:54:00.336062 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 10364:10640, ack 1, win 137, length 276

上例中,我们需要关注第三列和第四列,他们显示的信息为哪一个IP+端口号在连接哪一个IP+端口号,后面的信息是该数据包相关的信息。-i选项后面跟设备名称,如果想抓取其他网卡的数据包,后面则要跟其他网卡的名字。-nn选项的作用是让第三列和第四列显示成“IP+端口号”的形式,如果不加-nn选项则显示“主机名+服务名称”例如

20:00:16.003625 IP 192.168.73.1.49647 > 192.168.73.128.ssh: Flags [.], ack 1041148, win 16071, length 0
20:00:16.003817 IP 192.168.73.128.ssh > 192.168.73.1.49647: Flags [P.], seq 1041148:1041440, ack 157, win 137, length 292
20:00:16.003915 IP 192.168.73.128.ssh > 192.168.73.1.49647: Flags [P.], seq 1041440:1041620, ack 157, win 137, length 180
20:00:16.004145 IP 192.168.73.1.49647 > 192.168.73.128.ssh: Flags [.], ack 1041620, win 16425, length 0
20:00:16.004696 IP 192.168.73.128.ssh > 192.168.73.1.49647: Flags [P.], seq 1041620:1041912, ack 157, win 137, length 292
20:00:16.004878 IP 192.168.73.128.ssh > 192.168.73.1.49647: Flags [P.], seq 1041912:1042092, ack 157, win 137, length 180
20:00:16.005493 IP 192.168.73.1.49647 > 192.168.73.128.ssh: Flags [.], ack 1042092, win 16307, length 0
20:00:16.005853 IP 192.168.73.128.ssh > 192.168.73.1.49647: Flags [P.], seq 1042092:1042384, ack 157, win 137, length 292
20:00:16.005968 IP 192.168.73.128.ssh > 192.168.73.1.49647: Flags [P.], seq 1042384:1042564, ack 157, win 137, length 180
20:00:16.006226 IP 192.168.73.1.49647 > 192.168.73.128.ssh: Flags [.], ack 1042564, win 16189, length 0
20:00:16.006376 IP 192.168.73.128.ssh > 192.168.73.1.49647: Flags [P.], seq 1042564:1042856, ack 157, win 137, len

我们还可以指定抓包数量

[root@localhost ~]# tcpdump -nn -i eno16777736 -c 20
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno16777736, link-type EN10MB (Ethernet), capture size 262144 bytes
20:02:06.981782 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 537793882:537794094, ack 695503137, win 137, length 212
20:02:06.982275 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 212, win 16106, length 0
20:02:06.984163 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 212:504, ack 1, win 137, length 292
20:02:06.986115 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 504:668, ack 1, win 137, length 164
20:02:06.986652 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 668, win 16425, length 0
20:02:06.987054 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 668:944, ack 1, win 137, length 276
20:02:06.988978 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 944:1108, ack 1, win 137, length 164
20:02:06.989468 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 1108, win 16315, length 0
20:02:06.989700 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 1108:1384, ack 1, win 137, length 276
20:02:06.990041 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 1384:1548, ack 1, win 137, length 164
20:02:06.990226 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 1548, win 16205, length 0
20:02:06.990382 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 1548:1824, ack 1, win 137, length 276
20:02:06.990632 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 1824:1988, ack 1, win 137, length 164
20:02:06.990834 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 1988, win 16095, length 0
20:02:06.990995 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 1988:2264, ack 1, win 137, length 276
20:02:06.991290 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 2264:2428, ack 1, win 137, length 164
20:02:06.991459 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 2428, win 16425, length 0
20:02:06.991633 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 2428:2704, ack 1, win 137, length 276
20:02:06.992161 IP 192.168.73.128.22 > 192.168.73.1.49647: Flags [P.], seq 2704:2868, ack 1, win 137, length 164
20:02:06.992413 IP 192.168.73.1.49647 > 192.168.73.128.22: Flags [.], ack 2868, win 16315, length 0
20 packets captured
20 packets received by filter
0 packets dropped by kernel

我们也可以把抓包指定到一个文件夹

[root@localhost ~]# tcpdump  -i eno16777736 -w /tmp/1.cap
tcpdump: listening on eno16777736, link-type EN10MB (Ethernet), capture size 262144 bytes

 查看抓包类型

[root@localhost ~]# tcpdump -r /tmp/1.cap
tcpdump: truncated dump file; tried to read 4 file header bytes, only got 0

还有常用的示例

[root@localhost ~]# tcpdump -nn -i eno16777736 port 22    只抓22端口的包

[root@localhost ~]# tcpdump -nn -i eno16777736 tcp and not port 22 指定抓tcp的包,但是不要22端口的

[root@localhost ~]# tcpdump -nn -i eno16777736 22 and port 53 只抓22和53端口的包

[root@localhost ~]# tcpdump -nn -i eno16777736 not port 22 and host (ip地址)
  • wireshark 工具

它的功能非常强大,在linux平台我们同样也可以使用它,只不过是命令行的形式。没有这个命令使用yum install -y wireshark 这个命令安装

[root@localhost ~]# tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
[root@localhost ~]# tshark -n -i eth1 -R 'mysql.query' -T fields -e "ip.src" -e "mysql.query"

 

10.11 Linux网络相关

  • 用ifconfig命令查看网卡IP

如果linux上有很多网卡,想要重启一个网卡的话,可以使用下面命令

[root@localhost ~]# ifdown eno1677736; ifup ens33

ifdown是停用网卡,ifup是启动网卡。使用上面的命令需要重启一下网卡 systemctl restart network 

但是上面的例子正确地用法是中间加上&&,

[root@localhost ~]# ifdown eno1677736 && ifup ens33
  • 给一个网卡设定多个ip
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-eno16777736 ifcfg-eno16777736\:1

加上反斜杠,是因为要把:转义。不然在linux命令下下面无法识别,然后在编辑这个ifcfg-eno16777736\:1配置文件。一定要注意DEVICE要写成eno16777736:1,然后在更改一下ip

[root@localhost network-scripts]# vim ifcfg-eno16777736\:1

HWADDR=00:0C:29:1D:DB:B9
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736:1
UUID=530b38e3-7d4f-49cb-a464-3c34056e57cd
ONBOOT=yes
IPADDR=192.168.73.129
NETMASK=255.255.255.0
GATEWAY=192.168.73.2
DNS1=119.29.29.29
~                                                                                                                 
-- 插入 --                                                                                      

设置好后,我们重启一下网卡

[root@localhost network-scripts]# ifdown eno16777736 && ifup eno16777736

然后在来看一下网卡IP会看到多一个IP

[root@localhost network-scripts]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::20c:29ff:fe1d:dbb9  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:1d:db:b9  txqueuelen 1000  (Ethernet)
        RX packets 505  bytes 49926 (48.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 445  bytes 69448 (67.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno16777736:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.73.128  netmask 255.255.255.0  broadcast 192.168.73.255
        ether 00:0c:29:1d:db:b9  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost network-scripts]# 
  • 查看网络连接状态
[root@localhost ~]# mii-tool eno16777736
eno16777736: negotiated 1000baseT-FD flow-control, link ok

这里显示link ok表示网卡为连接状态,如果显示no ok 说明网卡坏了或者没有连接网线,还有一个命令可以查看网卡的状态

[root@localhost ~]# ethtool eno16777736
Settings for eno16777736:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Speed: 1000Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
	MDI-X: off (auto)
	Supports Wake-on: d
	Wake-on: d
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes

如果网卡没有连接最后面一行 显示no

  • 更改主机名
[root@localhost ~]# hostnamectl set-hostname hongwei
[root@localhost ~]# hostname
hongwei

现在看到我们还没有显示,需要断开重新连接一下

  • 设置DNS

在linux下设置DNS非常简单,只要把DNS地址写到配置文件/etc/resolv.conf。

[root@hongwei ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 119.29.29.29

第一行以#号开头的行没有实际意义,仅仅是一个注释。如果想要临时更改DNS IP地址,就直接修改/etc/resolv.conf。想要永久生效还是要修改网卡的配置文件。

在linux下还有一个特殊文件/etc/hosts也能解析域名,不过需要我们手动添加一行

[root@hongwei ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

使用vim编辑,增加一行,保存

[root@hongwei ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.73.128 www.baidu.com
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
~                                                                                                                 
"/etc/hosts" 3L, 187C                                                                           3,1          全部

我们再次ping一下 www.baidu.com 就会链接 192.168.73.128了 

[root@hongwei ~]# ping www.baidu.com
PING www.baidu.com (192.168.73.128) 56(84) bytes of data.
64 bytes from www.baidu.com (192.168.73.128): icmp_seq=1 ttl=64 time=0.131 ms
64 bytes from www.baidu.com (192.168.73.128): icmp_seq=2 ttl=64 time=0.212 ms
64 bytes from www.baidu.com (192.168.73.128): icmp_seq=3 ttl=64 time=0.035 ms
64 bytes from www.baidu.com (192.168.73.128): icmp_seq=4 ttl=64 time=0.035 ms
64 bytes from www.baidu.com (192.168.73.128): icmp_seq=5 ttl=64 time=0.036 ms
^C
--- www.baidu.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 0.035/0.089/0.212/0.072 ms

/etc/hosts的格式很简单,每一行为一条记录,分成二部分,第一部分是IP,第二部分是域名。关于这个文件,需要注意一下几点

  1. 一个IP后面可以跟过个域名,可以是几十个甚至上千个
  2. 每一行只能由一个IP,也就是说一个域名不能对应多个IP
  3. 如果有多行中出现相同的域名,会按最前面出现的记录来解析

 

拓展知识

  • ip命令的其他用法

ip命令使用
1. 设置和删除IP
ip  addr add 192.168.10.10/24  dev eth0
ip  addr show eth0
ip addr del 192.168.10.10/24  dev eth0

2. 路由相关设置
ip route show
ip route add default  via 192.168.10.1
ip route add 192.168.5.0/24 dev eth0
ip route del 192.168.10.1

另外用route命令来管理路由:
(a)、网络路由
# route add -net 192.168.1.0/24 gw 172.16.1.106
(b)、主机路由
# route add -host 192.168.1.110 gw 172.16.1.106
(c)、默认路由
# route add default gw 172.16.1.106

# route add -net 0.0.0.0 gw 172.16.1.106
(d)、删除路由
# route del -host 192.168.1.110
# route del -net 192.168.1.0/24


3. 显示网络统计数据
ip -s link
ip -s -s link ls eth0

3. 停止开启网卡
ip link set eth0 down
ip linke set eth0 up

更改网卡名字
ip link set ens37 name eth1


  •  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3851487/blog/1826958

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值