HJM

导航

运维常用命令基础(一)

第十三课 运维基础(一)

目录

一、使用w查看系统负载
二、vmstat命令
三、top命令
四、sar命令
五、nload命令
六、监控io性能
七、free命令
八、ps命令
九、查看网络状态
十、linux下抓包
十一、Linux网络相关
十二、扩展


一、使用w命令查看系统负载

w命令显示当前机器上登录的用户以及他们的进程信息。单独执行w命令显示所有的用户,也可以指定用户名称,仅显示该用户的相关信息。

[root@lanquark demo]# w
 21:57:07 up 51 min,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.1.229       21:08    3.00s  0.46s  0.01s w
root     pts/1    10.0.1.229       21:33   21:47   0.04s  0.04s -bash

第一行从左至右依次显示的信息为:

系统当前时间;系统已经运行的时间;当前有多少用户登录;系统在过去1分钟,5分钟,15钟内的平均负载

如果平均负载的值超过了逻辑cpu数量,那么就需要注意了。

cpu的信息可通过/proc/cpuinfo文件查询

[root@lanquark demo]# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 42
model name	: Intel(R) Pentium(R) CPU G840 @ 2.80GHz
stepping	: 7
microcode	: 0x29
cpu MHz		: 2793.225
cache size	: 3072 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
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 ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave hypervisor lahf_lm epb tpr_shadow vnmi ept vpid tsc_adjust dtherm arat pln pts
bogomips	: 5587.33
clflush size	: 64
cache_alignment	: 64
address sizes	: 42 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 42
model name	: Intel(R) Pentium(R) CPU G840 @ 2.80GHz
stepping	: 7
microcode	: 0x29
cpu MHz		: 2793.225
cache size	: 3072 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 1
initial apicid	: 1
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 ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave hypervisor lahf_lm epb tpr_shadow vnmi ept vpid tsc_adjust dtherm arat pln pts
bogomips	: 5587.33
clflush size	: 64
cache_alignment	: 64
address sizes	: 42 bits physical, 48 bits virtual
power management:

逻辑cpu的数量统计

[root@lanquark demo]# grep -c 'model name' /proc/cpuinfo 
2

第二栏的从左至右依次显示的信息为:登录用户名;登录的终端名称;登录的远程主机名,登录时间,空闲时间,该终端下所有进程的cpu时间(包括当前后台进程的cpu时间,但不包括过去的后台进程的cpu时间);当前进程的cpu时间;当前进程的命令行。

uptime命令

uptime命令显示系统运行了多长时间。uptime命令给出以下信息的单行显示:系统当前时间;系统已经运行的时间;当前有多少用户登录;系统在过去1分钟,5分钟,15钟内的平均负载。与W命令的第一行结果是一样的。

[root@lanquark demo]# uptime 
 23:15:22 up  2:09,  2 users,  load average: 0.00, 0.01, 0.05
[root@lanquark demo]# w
 23:15:28 up  2:09,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.1.229       21:08    0.00s  0.62s  0.01s w
root     pts/1    10.0.1.229       21:33    1:06m  0.07s  0.00s less -s


二、vmstat命令

vmstat命令显示虚拟内存统计信息。包括进程,内存,页面文件,阻塞的I/O,陷井,和cpu。

常见用法

vmstat
静态显示内存状态一次

[root@lanquark demo]# 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 738636   2076 127756    0    0     6     1   27   27  0  0 100  0  0

vmstat [n] 在此n代表时间间隔
意思是以n秒每次的时间间隔动态显示内存状态(按Ctrl+c结束命令)。

[root@lanquark demo]# vmstat 3
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 738636   2076 127756    0    0     6     1   26   26  0  0 100  0  0
 0  0      0 738636   2076 127756    0    0     0     0   61   51  0  0 100  0  0
 0  0      0 738636   2076 127756    0    0     0     0   37   35  0  0 100  0  0
 0  0      0 738636   2076 127756    0    0     0     0   49   44  0  0 100  0  0
^C

vmstat [n] [m]
意思是以n秒为时间间隔,显示m次后命令结束!

[root@lanquark demo]# 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
 2  0      0 738776   2076 127756    0    0     6     1   26   26  0  0 100  0  0
 0  0      0 738760   2076 127756    0    0     0     0   37   37  0  0 100  0  0
 0  0      0 738760   2076 127756    0    0     0     0   37   37  0  0 100  0  0
 0  0      0 738760   2076 127756    0    0     0     0   39   36  0  0 100  0  0
 0  0      0 738760   2076 127756    0    0     0     0   37   36  0  0 100  0  0

字段说明:

Procs(进程)

r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(超过逻辑cpu的个数需要考虑增加cpu)
b: 等待IO的进程数量。

Memory(内存)

swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

Swap
si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

IO(现在的Linux版本块的大小为1kb)

bi: 每秒读取的块数
bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

system(系统)

in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示)

us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

id: 空闲时间百分比


三、top命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

语法:top [选项]

常用选项
-b:批量处理模式
-c:显示详细进程信息
-bn1:静态显示所有进程(该法多用于shell脚本)

top视图

top - 23:54:11 up  2:48,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 100 total,   2 running,  98 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999720 total,   736876 free,   132980 used,   129864 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   714768 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                        
     9 root      20   0       0      0      0 S   0.7  0.0   0:03.22 rcu_sched                                      
    13 root      20   0       0      0      0 S   0.7  0.0   0:00.16 ksoftirqd/1                                    
  1621 root      20   0  157684   2148   1516 R   0.2  0.2   0:00.07 top                                            
  1622 root      20   0       0      0      0 S   0.2  0.0   0:00.01 kworker/1:0                                    
     1 root      20   0  125736   4248   2504 S   0.0  0.4   0:01.19 systemd                                        
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd             
   
   ... 中间略...
   
    30 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kswapd0                                        
    31 root      25   5       0      0      0 S   0.0  0.0   0:00.00 ksmd                                           
    32 root      39  19       0      0      0 S   0.0  0.0   0:00.09 khugepaged  

字段说明如下

统计信息区(前五行)

第一行从左至右依次显示内容为:系统当前时间;系统已经运行的时间;当前有多少用户登录;系统在过去1分钟,5分钟,15钟内的平均负载。同uptime命令的运行结果。

第二行从左至右依次显示内容为:进程总数;正在运行的进程数;睡眠的进程数;停止的进程数;僵尸进程数

第三行从左至右依次显示内容为:用户空间占用cpu比;内核空间占用cpu百分比;用户进程空间内改变优先级的进程占用cpu百分比;空闲cpu百分比;等待输入输出的cpu时间百分比;处理硬件中断的CPU时间;处理软件中断的CPU时间;这个虚拟机被hypervisor偷去的CPU时间

最后两行为内存信息,内容如下:

物理内存总量;使用的物理内存总量;空闲内存总量;用作内核缓存的内存量;交换区总量;使用的交换区总量;空闲交换区总量;缓冲的交换区总量。

进程信息区

PID:进程ID,进程的唯一标识符

USER:进程所有者的实际用户名。

PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。

NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级

VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR:SHR是进程使用的共享内存。共享内存大小,单位kb

S:这个是进程的状态。它有以下不同的值:

D - 不可中断的睡眠态。
R – 运行态
S – 睡眠态
T – 被跟踪或已停止
Z – 僵尸态

%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。

%MEM:进程使用的可用物理内存百分比。

TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)

还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组ID和其他更多的信息。

top的交互命令

‘h’: 帮助

Help for Interactive Commands - procps-ng version 3.3.10
Window 1:Def: Cumulative mode Off.  System: Delay 10.0 secs; Secure mode Off.

  Z,B,E,e   Global: 'Z' colors; 'B' bold; 'E'/'e' summary/task memory scale
  l,t,m     Toggle Summary: 'l' load avg; 't' task/cpu stats; 'm' memory info
  0,1,2,3,I Toggle: '0' zeros; '1/2/3' cpus or numa node views; 'I' Irix mode
  f,F,X     Fields: 'f'/'F' add/remove/order/sort; 'X' increase fixed-width

  L,&,<,> . Locate: 'L'/'&' find/again; Move sort column: '<'/'>' left/right
  R,H,V,J . Toggle: 'R' Sort; 'H' Threads; 'V' Forest view; 'J' Num justify
  c,i,S,j . Toggle: 'c' Cmd name/line; 'i' Idle; 'S' Time; 'j' Str justify
  x,y     . Toggle highlights: 'x' sort field; 'y' running tasks
  z,b     . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
  u,U,o,O . Filter by: 'u'/'U' effective/any user; 'o'/'O' other criteria
  n,#,^O  . Set: 'n'/'#' max tasks displayed; Show: Ctrl+'O' other filter(s)
  C,...   . Toggle scroll coordinates msg for: up,down,left,right,home,end

  k,r       Manipulate tasks: 'k' kill; 'r' renice
  d or s    Set update interval
  W,Y       Write configuration file 'W'; Inspect other output 'Y'
  q         Quit
          ( commands shown with '.' require a visible task display window ) 
Press 'h' or '?' for help with Windows,
Type 'q' or <Esc> to continue

’ 或者 ‘’: 刷新显示

top命令默认在一个特定间隔(3秒)后刷新显示。要手动刷新,用户可以输入回车或者空格。

多核CPU监控

在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况:

//默认显示%cpu
//按1后显示%cpu0,%cpu1,因为本机是双核
top - 01:50:31 up  4:44,  2 users,  load average: 0.00, 0.01, 0.05
Threads: 115 total,   2 running, 113 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999720 total,   736128 free,   133392 used,   130200 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   714152 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                         
  1621 root      20   0  157684   2268   1604 R  0.1  0.2   0:02.27 top                                             
     1 root      20   0  125736   4248   2504 S  0.0  0.4   0:01.24 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.07 ksoftirqd/0                                     
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                                    
     6 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kworker/u256:0                                  
...下略...

shift+M 按内存占用排序(默认(默认以CPU使用占比排序,shift+p恢复默认)

top - 01:56:03 up  4:50,  2 users,  load average: 0.00, 0.01, 0.05
Threads: 115 total,   2 running, 113 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.5 sy,  0.0 ni, 99.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999720 total,   736128 free,   133392 used,   130200 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   714152 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                         
  1070 root      20   0  562408  18644   5888 S  0.0  1.9   0:00.20 tuned                                           
  1111 root      20   0  562408  18644   5888 S  0.0  1.9   0:00.00 gmain                                           
  1112 root      20   0  562408  18644   5888 S  0.0  1.9   0:00.00 tuned                                           
  1113 root      20   0  562408  18644   5888 S  0.0  1.9   0:02.36 tuned                                           
  1114 root      20   0  562408  18644   5888 S  0.0  1.9   0:00.00 tuned                                           
   674 polkitd   20   0  534892  11816   4864 S  0.0  1.2   0:00.05 polkitd                                         
   693 polkitd   20   0  534892  11816   4864 S  0.0  1.2   0:00.00 gmain                                           
   695 polkitd   20   0  534892  11816   4864 S  0.0  1.2   0:00.00 gdbus                                           
   696 polkitd   20   0  534892  11816   4864 S  0.0  1.2   0:00.00 JS GC Helper                                    
   697 polkitd   20   0  534892  11816   4864 S  0.0  1.2   0:00.00 JS Sour~ Thread                                 
   707 polkitd   20   0  534892  11816   4864 S  0.0  1.2   0:00.00 polkitd                                         
   730 root      20   0  471816  10916   6612 S  0.0  1.1   0:00.17 NetworkManager                                  
   750 root      20   0  471816  10916   6612 S  0.0  1.1   0:00.41 gmain                                           
   765 root      20   0  471816  10916   6612 S  0.0  1.1   0:00.01 gdbus                                           
   670 root      20   0  210180   9908   3104 S  0.0  1.0   0:00.01 rsyslogd                                        
   692 root      20   0  210180   9908   3104 S  0.0  1.0   0:01.76 in:imjournal                                    
   694 root      20   0  210180   9908   3104 S  0.0  1.0   0:00.08 rs:main Q:Reg                                   
   673 root      20   0  305080   6160   4796 S  0.0  0.6   0:16.36 vmtoolsd                                        
   719 root      20   0  305080   6160   4796 S  0.0  0.6   0:00.00 gmain                                           
   672 root      20   0   99612   6080   4476 S  0.0  0.6   0:00.04 VGAuthService                                   
   654 root      20   0  219408   5644   3828 S  0.0  0.6   0:00.14 abrtd                                           
  1183 root      20   0  145704   5204   3940 S  1.0  0.5   0:02.50 sshd                                            
  1269 root      20   0  145704   5204   3940 S  0.0  0.5   0:00.25 sshd                                            
   667 root      20   0  216908   4724   3320 S  0.0  0.5   0:00.06 abrt-watch-log                                  
     1 root      20   0  125736   4248   2504 S  0.0  0.4   0:01.24 systemd                                         
  1069 root      20   0  105996   4092   3112 S  0.0  0.4   0:00.01 sshd                                            

-f 默认显示的字段

Fields Management for window 1:Def, whose current sort field is %MEM
   Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
   'd' or <Space> toggles display, 's' sets sort.  Use 'q' or <Esc> to end!

* PID     = Process Id             DATA    = Data+Stack (KiB)    
* USER    = Effective User Name    nMaj    = Major Page Faults   
* PR      = Priority               nMin    = Minor Page Faults   
* NI      = Nice Value             nDRT    = Dirty Pages Count   
* VIRT    = Virtual Image (KiB)    WCHAN   = Sleeping in Function
* RES     = Resident Size (KiB)    Flags   = Task Flags <sched.h>
* SHR     = Shared Memory (KiB)    CGROUPS = Control Groups      
* S       = Process Status         SUPGIDS = Supp Groups IDs     
* %CPU    = CPU Usage              SUPGRPS = Supp Groups Names   
* %MEM    = Memory Usage (RES)     TGID    = Thread Group Id     
* TIME+   = CPU Time, hundredths   ENVIRON = Environment vars    
* COMMAND = Command Name/Line      vMj     = Major Faults delta  
  PPID    = Parent Process pid     vMn     = Minor Faults delta  
  UID     = Effective User Id      USED    = Res+Swap Size (KiB) 
  RUID    = Real User Id           nsIPC   = IPC namespace Inode 
  RUSER   = Real User Name         nsMNT   = MNT namespace Inode 
  SUID    = Saved User Id          nsNET   = NET namespace Inode 
  SUSER   = Saved User Name        nsPID   = PID namespace Inode 
  GID     = Group Id               nsUSER  = USER namespace Inode
  GROUP   = Group Name             nsUTS   = UTS namespace Inode 
  PGRP    = Process Group Id    
  TTY     = Controlling Tty     
  TPGID   = Tty Process Grp Id  
  SID     = Session Id          
  nTH     = Number of Threads   
  P       = Last Used Cpu (SMP) 
  TIME    = CPU Time            
  SWAP    = Swapped Size (KiB)  
  CODE    = Code Size (KiB)     

top -bn1 静态显示所有进程

[root@lanquark ~]# top -bn1
top - 20:33:37 up 6 min,  1 user,  load average: 0.00, 0.01, 0.01
Tasks: 115 total,   1 running, 114 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  1.6 sy,  0.0 ni, 98.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999720 total,   267008 free,   577360 used,   155352 buff/cache
KiB Swap:  1999868 total,  1999868 free,        0 used.   255448 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     1 root      20   0  191252   4212   2492 S   0.0  0.4   0:01.15 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.00 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.02 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.23 rcu_sched
    10 root      rt   0       0      0      0 S   0.0  0.0   0:00.00 watchdog/0
    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.00 watchdog/1
    12 root      rt   0       0      0      0 S   0.0  0.0   0:00.01 migration/1
    13 root      20   0       0      0      0 S   0.0  0.0   0:00.01 ksoftirqd/1
    14 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0
...中间略...
  1121 root      20   0  105996   4084   3104 S   0.0  0.4   0:00.00 sshd
  1134 root      20   0  115388   1672   1360 S   0.0  0.2   0:00.00 mysqld_safe
  1277 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kdmflush
  1278 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset
  1310 mysql     20   0 1300780 454336   5840 S   0.0 45.4   0:04.04 mysqld
  1372 root      20   0   89544   2080   1068 S   0.0  0.2   0:00.01 master
  1373 postfix   20   0   89648   4004   3004 S   0.0  0.4   0:00.01 pickup
  1374 postfix   20   0   89716   4028   3024 S   0.0  0.4   0:00.00 qmgr
  1407 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/2:1H
  1413 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:1H
  1417 root      20   0  145700   5168   3908 S   0.0  0.5   0:00.05 sshd
  1419 root      20   0  116316   2936   1648 S   0.0  0.3   0:00.04 bash
  1468 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/3:1H
  1482 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0
  1483 root      20   0  157584   2056   1480 R   0.0  0.2   0:00.00 top

htop命令具有更好的可视化界面。


sar命令

sar是system activity recorder的缩写,它不仅可以用来收集、报告和存储系统活动实时信息,还可以从数据文件中查看历史信息。

如果系统中没有sar命令,需安装sysstat软件包

[root@lanquark demo]# yum -y install sysstat-10.1.5-13.el7.x86_64

实时信息

语法:sar [选项] [interval] [count]

活动信息依赖于interval和count两个参数。如没有count,则只会运行一次。

历史信息

在/var/log/sa目录中记录了Linux系统的主要组件的数据,包括cpu、内存、磁盘、网络等。每天的数据记录在一个名为sa[nn]文件中。nn是每月的第nn天。

查看特定日期的sar数据用如下命令

//当月10日的信息
[root@lanquark demo]# sar -f  /var/log/sa/sa10 
Linux 3.10.0-693.el7.x86_64 (lanquark.com) 	06/10/2018 	_x86_64_	(2 CPU)

显示系统cpu利用率的相关信息

//使用sar 3 5 或者 sar -u 3 5
[root@lanquark demo]# sar 3 5
Linux 3.10.0-693.el7.x86_64 (lanquark.com) 	06/10/2018 	_x86_64_	(2 CPU)

02:22:07 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
02:22:10 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
02:22:13 AM     all      0.17      0.00      0.17      0.00      0.00     99.67
02:22:16 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
02:22:19 AM     all      0.00      0.00      0.17      0.00      0.00     99.83
02:22:22 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
Average:        all      0.03      0.00      0.07      0.00      0.00     99.90
//cpu信息说明
//CPU标识符;all表示所有CPU
//%user用户级进行运行占用的cpu利用率,包括运行虚拟进程的时间
//%nice 在nice优先级下用户级进程占用的cpu利用率
//%system 系统进程(内核)运行占用的cpu百分比,包括软、硬件的中断时间
//%iowait等待进行I/O操作的cpu百分比,此时cpu处于空闲状态但是系统有未完成的I/O请求
//%steal 在管理程序运行其他虚拟化进程所造成的cpu等待的百分比
//%idle 等待工作的cpu空闲时间百分比

//显示各个cpu的统计信息及总统计信息
[root@lanquark demo]# sar -P ALL 2 2
Linux 3.10.0-693.el7.x86_64 (lanquark.com) 	06/10/2018 	_x86_64_	(2 CPU)

02:50:27 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
02:50:29 AM     all      0.00      0.00      0.25      0.00      0.00     99.75
02:50:29 AM       0      0.00      0.00      0.00      0.00      0.00    100.00
02:50:29 AM       1      0.00      0.00      0.00      0.00      0.00    100.00

02:50:29 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
02:50:31 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
02:50:31 AM       0      0.00      0.00      0.00      0.00      0.00    100.00
02:50:31 AM       1      0.00      0.00      0.00      0.00      0.00    100.00

Average:        CPU     %user     %nice   %system   %iowait    %steal     %idle
Average:        all      0.00      0.00      0.12      0.00      0.00     99.88
Average:          0      0.00      0.00      0.00      0.00      0.00    100.00
Average:          1      0.00      0.00      0.00      0.00      0.00    100.00


内存信息

//每隔1秒输出一次内存信息,共输出3次
[root@lanquark demo]# sar -R 1 3
Linux 3.10.0-693.el7.x86_64 (lanquark.com) 	06/10/2018 	_x86_64_	(2 CPU)

02:52:03 AM   frmpg/s   bufpg/s   campg/s
02:52:04 AM      6.00      0.00      0.00
02:52:05 AM      0.00      0.00      0.00
02:52:06 AM      0.00      0.00      0.00
Average:         1.99      0.00      0.00
//frmpg/s 系统每秒释放的内存页数量,如果值为负表示系统已经分配了的内存页数。依机器体系的不同,内存页的大小可能为4kb或8kb
//bufpg/s 系统每秒用于buffers的附加的内存页数。如果值为负表示只有较少的页被用于系统buffers
//campg/s 系统每秒用于cached的附加的内存页数。如果值为负表示只有较少的页被用于系统cached


//每隔1秒输出一次内存利用率信息,共输出3次
[root@lanquark demo]# sar -r 1 3
Linux 3.10.0-693.el7.x86_64 (lanquark.com) 	06/10/2018 	_x86_64_	(2 CPU)

02:53:30 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
02:53:31 AM    250040    749680     74.99      2076    547132    258132      8.34    540072     85256         0
02:53:32 AM    250040    749680     74.99      2076    547132    258132      8.34    540080     85256         0
02:53:33 AM    250040    749680     74.99      2076    547132    258132      8.34    540084     85256         0
Average:       250040    749680     74.99      2076    547132    258132      8.34    540079     85256         0
//kbmemfree 此时可用的内存数量,以kb为单位
//kbmemused 此时已用的内存数量,以kb为单位,不包括内核使用的内存数
//%memused  已使用内存的百分比
//kbbuffers 内核使用的缓冲区(buffer)占内存的百分比,以kb为单位,即为free命令中的buffer
//kbcached 内核使用的缓存(cache)占内存的百分比,以kb为单位,即为free命令中的cache
//kbcommit 当前工作负载所需要的内存数量,以kb为单位,这是对于当前所需RAM/swap的一个估值。以保证不会出现内存不足
//%commit 中kbcommit与内存总量(包括swap)的一个比值,该值有可能会超100%

//每隔1秒输出一次SWAP利用率信息,共输出3次
[root@lanquark demo]# sar -S 1 3
Linux 3.10.0-693.el7.x86_64 (lanquark.com) 	06/10/2018 	_x86_64_	(2 CPU)

03:05:01 AM kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
03:05:02 AM   2097148         0      0.00         0      0.00
03:05:03 AM   2097148         0      0.00         0      0.00
03:05:04 AM   2097148         0      0.00         0      0.00
Average:      2097148         0      0.00         0      0.00
//kbswpfree 空闲可用的交换分区大小,以kb为单位
//kbswpused 以使用的交换分区大小,以kb为单位
//%swpused  已使用的交换分区所占的百分比
//kbswpcad  用于cache的swap内存数,以kb为单位。该内存指的是:曾经被swap out的内存又被swap back in。但是还存在于swap中。由于它在swap中已经存在,所以如果该部分内存需要调用就不会再次swap out,节省I/O操作。
//%swpcad 用于cache的swap内存。

I/O

[root@lanquark demo]# sar -b 2 5
Linux 3.10.0-693.el7.x86_64 (lanquark.com) 	06/10/2018 	_x86_64_	(2 CPU)

03:21:20 AM       tps      rtps      wtps   bread/s   bwrtn/s
03:21:22 AM      0.00      0.00      0.00      0.00      0.00
03:21:24 AM      0.00      0.00      0.00      0.00      0.00
03:21:26 AM      0.00      0.00      0.00      0.00      0.00
03:21:28 AM      0.00      0.00      0.00      0.00      0.00
03:21:30 AM      0.00      0.00      0.00      0.00      0.00
Average:         0.00      0.00      0.00      0.00      0.00
//tps 每秒传送到物理设备的I/O请求总数。多个逻辑请求可能会组合成一个I/O请求,每个I/O请求的大小并不固定
//rtps 对物理设备的读请求速率/秒
//wtps 对物理设备的写请求速率/秒
//bread/s 每秒从块设备读取数据的速度,以块(block)为单位,一块为512Bytes
//bwrtn/s 每秒向块设备写入数据的速度

磁盘统计信息

//每隔2秒显示一次信息,共显示5次
[root@lanquark demo]# sar -d 2 5
Linux 3.10.0-693.el7.x86_64 (lanquark.com) 	06/10/2018 	_x86_64_	(2 CPU)

03:36:04 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03:36:06 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:36:06 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

03:36:06 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03:36:08 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:36:08 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

03:36:08 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03:36:10 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:36:10 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

03:36:10 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03:36:12 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:36:12 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

03:36:12 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
03:36:14 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:36:14 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
Average:       dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:      dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

//tps 每秒对设备进行的I/O操作数量
//rd_sec/s 每秒从磁盘读取的扇区数,每个扇区为512字节
//wr_sec/s 每秒写入磁盘的扇区数
//avgrq-sz 磁盘的平均请求扇区数
//avgqu-sz 磁盘的平均请求的队列长度
//await 平均每次磁盘I/O请求花费的时间,包括服务时间的队列等待时间
//svctm 平均每次磁盘I/O请求的服务时间
//%util 设备用于I/O操作的cpu百分比


nload命令

系统中默认没有nload命令,需安装软件包nload

[root@lanquark demo]# yum -y install nload-0.7.4-4.el7.x86_64

用法

直接在命令行键入nload

RnvV9.jpg

nload 命令一旦执行就会开始监控网络设备,你可以使用下列快捷键操控 nload 应用程序。

你可以按键盘上的 ← → 或者 Enter/Tab 键在设备间切换。
按 F2 显示选项窗口。
按 F5 将当前设置保存到用户配置文件。
按 F6 从配置文件重新加载设置。
按 q 或者 Ctrl+C 退出 nload。


六、监控I/O性能

iostat命令可以查看cpu的统计信息,以及设备,磁盘分区和网络文件系统等的I/O统计信息。

常用参数

-c 显示cpu的使用情况,默认显示cpu的使用情况
-d 显示磁盘的使用情况
-k 以千字节为单位显示数据
-x device 指定要统计的设备名称,默认为所有的设备

cpu利用率报告

[root@lanquark demo]# iostat -c 
Linux 3.10.0-693.el7.x86_64 (lanquark.com) 	06/10/2018 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.04    0.00    0.10    0.06    0.00   99.80
//%user  cpu处在用户模式下的时间百分比 
//%nice  cpu处在带nice值的用户模式下的时间百分比 
//%system cpu处在系统模式下的时间百分比
//%iowait cpu等待输入/输出完成的时间百分比
//%steal  管理程序维护另一个虚拟处理器时,虚拟cpu的无意识等待时间百分比
//%idle 显示cpu空闲时间的在百分比
//如果iowait的值过高,表示磁盘存在I/O瓶颈;如果idle值高,说明cpu较空闲,如果idle值高但系统响应慢,有可能是cpu等待分配内存,此时应加在内存容量,如果idle值持续低于10,说明cpu存在瓶颈。

设备利用率

[root@lanquark demo]# iostat sda
Linux 3.10.0-693.el7.x86_64 (lanquark.com) 	06/10/2018 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.04    0.00    0.10    0.06    0.00   99.81

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.54         9.48        15.04     248642     394548
//Device 监测的设备名称
//tps 设备每秒传输的次数
//kB_read/s  每秒从该设备读取的块数
//kB_wrtn/s  每秒向该设备写入的块数
//kB_read  系统启动读取的总块数
//kB_wrtn  系统启动后写入的总块数

如需了解更加详细的信息,需要使用-x参数
[root@lanquark demo]# iostat -x sda
Linux 3.10.0-693.el7.x86_64 (lanquark.com) 	06/10/2018 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.04    0.00    0.09    0.06    0.00   99.81

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.00     0.01    0.34    0.20     9.39    14.90    91.09     0.01   25.73   11.22   50.71   2.87   0.15
//Device:  监测的设备名称,默认所有的设备      
//rrqm/s   该设备每秒合并的请求数量
//wrqm/s   与读取类似,表示该设备每秒合并的写请求数
// r/s   每秒向该设备发出的读请求数
// w/s   每秒每该设备发出的写请求数
//rkB/s  每秒从该设备读取的扇区数
//wkB/s  每秒写入该设备的扇区数
//avgrq-sz 该设备读请求的平均大小,以扇区为单位
//avgqu-sz 该设备的请求队列的平均长度
//await 该设备的每一个I/O请求处理的平均时间
//r_await 该设备的每一个I/O读请求处理的平均时间
//w_await 该设备的每一个I/O写请求处理的平均时间
//svctm  该设备的I/O请求的平均服务时间,以毫秒为单位
//%util 该设备在I/O请求过程中CPU百分比。暗示了设备的繁忙程度。

iotop命令

iotop命令是类似于top命令的I/O监视器。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到每设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。

系统默认没有安装iotop,需安装软件包iotop

[root@lanquark demo]# yum -y install iotop-0.6-2.el7.noarch

用法

在命令行直接输入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
     1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 21
     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]
     5 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
     6 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/u256:0]
     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 % [rcu_sched]
    10 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    11 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/1]
    12 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
    13 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]
    15 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/1:0H]
    17 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kdevtmpfs]
    18 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [netns]
    19 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khungtaskd]
    20 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [writeback]
    21 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kintegrityd]
    22 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [bioset]
    23 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kblockd]
    24 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [md]
  1114 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % python -Es /usr/sbin/tuned -l -P
    30 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kswapd0]
    31 be/5 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksmd]
    32 be/7 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khugepaged]
    33 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [crypto]
    41 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthrotld]
    43 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/u256:1]
    44 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kmpath_rdacd]
...下略...

常用快捷

← →左右箭头:改变排序方式,默认是按IO排序。
r:改变排序顺序。
o:只显示有IO输出的进程。
p:进程/线程的显示方式的切换。
a:显示累积使用量。
q:退出。


七、free命令

free命令可以查看系统内存的使用情况。

-b,-k,-m,-g 以KB,MB,GB为单位显示输出

[root@lanquark demo]# free -k
              total        used        free      shared  buff/cache   available
Mem:         999720      137740      227952        6760      634028      674568
Swap:       2097148           0     2097148
[root@lanquark demo]# free -m
              total        used        free      shared  buff/cache   available
Mem:            976         134         222           6         619         658
Swap:          2047           0        2047
[root@lanquark demo]# free -g
              total        used        free      shared  buff/cache   available
Mem:              0           0           0           0           0           0
Swap:             1           0           1

-h 以人类友好的方式输出

[root@lanquark demo]# free -h
              total        used        free      shared  buff/cache   available
Mem:           976M        134M        222M        6.6M        619M        658M
Swap:          2.0G          0B        2.0G

-t 在输出底部显示物理内存和交换分区的总和

[root@lanquark demo]# free -t
              total        used        free      shared  buff/cache   available
Mem:         999720      137560      228112        6760      634048      674748
Swap:       2097148           0     2097148
Total:      3096868      137560     2325260

说明:

“total=used+free+buff/cache”

“available=free+buff/cache(空闲部分)”

buff(缓冲):主要是用在传输效率不同步或优先级不同设备之间传输数据,一般是先将一方数据临时存放,然后待时机合适再将数据统一发送到另一方,从而降低了系统的等待时间。

cache(缓存):缓存主要是在传输速度比较高的设备中为传输速度比较低的设备开辟一定空间,用于存放速度低设备中数据的副本,这样当要访问数据时,就可以从速度快设备访问得到,无需访问低速度的设备。


八、ps命令

PS命令可以查找特定的PID,检查进程正在做什么,并且概述系统中正在发生的每件事件。

使用UNIX选项的基本语法

ps [-aefFly] [-p pid] [-u uid]

使用BSD选项的基本语法

ps [ajluvx] [p pid] [u uid]

二种选项使用任意一种即可。

常用组合

ps 显示自己的进程

[root@lanquark demo]# ps
   PID TTY          TIME CMD
  1185 pts/0    00:00:01 bash
  3004 pts/0    00:00:00 ps

ps -ef,显示所有的用户进程,完整输出

[root@lanquark demo]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 Jun09 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root          2      0  0 Jun09 ?        00:00:00 [kthreadd]
root          3      2  0 Jun09 ?        00:00:00 [ksoftirqd/0]
root          5      2  0 Jun09 ?        00:00:00 [kworker/0:0H]
root          6      2  0 Jun09 ?        00:00:00 [kworker/u256:0]
root          7      2  0 Jun09 ?        00:00:00 [migration/0]
root          8      2  0 Jun09 ?        00:00:00 [rcu_bh]
root          9      2  0 Jun09 ?        00:00:09 [rcu_sched]
root         10      2  0 Jun09 ?        00:00:00 [watchdog/0]
...中间略...
root       1271   1269  0 Jun09 pts/1    00:00:00 -bash
root       1403      2  0 Jun09 ?        00:00:14 [kworker/0:0]
root       1603   1271  0 Jun09 pts/1    00:00:00 man vmstat
root       1613   1603  0 Jun09 pts/1    00:00:00 less -s
root       2979      2  0 05:10 ?        00:00:00 [kworker/1:0]
postfix    2994   1170  0 05:26 ?        00:00:00 pickup -l -t unix -u
root       3001      2  0 05:30 ?        00:00:00 [kworker/1:1]
root       3002      2  0 05:32 ?        00:00:00 [kworker/0:1]
root       3003      2  0 05:37 ?        00:00:00 [kworker/0:2]
root       3005      2  0 05:38 ?        00:00:00 [kworker/1:2]
root       3006   1185  0 05:38 pts/0    00:00:00 ps -ef

ps -a 显示所有非守护进程

[root@lanquark demo]# ps -a
   PID TTY          TIME CMD
  1603 pts/1    00:00:00 man
  1613 pts/1    00:00:00 less
  3007 pts/0    00:00:00 ps

ps -t -

[root@lanquark demo]# ps -t -
   PID TTY          TIME CMD
     1 ?        00:00:01 systemd
     2 ?        00:00:00 kthreadd
     3 ?        00:00:00 ksoftirqd/0
     5 ?        00:00:00 kworker/0:0H
     6 ?        00:00:00 kworker/u256:0
     7 ?        00:00:00 migration/0
     8 ?        00:00:00 rcu_bh
...中间略...
  1070 ?        00:00:04 tuned
  1170 ?        00:00:00 master
  1172 ?        00:00:00 qmgr
  1183 ?        00:00:08 sshd
  1269 ?        00:00:00 sshd
  1403 ?        00:00:14 kworker/0:0
  2979 ?        00:00:00 kworker/1:0
  2994 ?        00:00:00 pickup
  3001 ?        00:00:00 kworker/1:1
  3002 ?        00:00:00 kworker/0:1
  3003 ?        00:00:00 kworker/0:2
  3005 ?        00:00:00 kworker/1:2

ps ax 显示所有进程

[root@lanquark demo]# ps ax
   PID TTY      STAT   TIME COMMAND
     1 ?        Ss     0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
     2 ?        S      0:00 [kthreadd]
     3 ?        S      0:00 [ksoftirqd/0]
   ...中间略...
  1403 ?        R      0:14 [kworker/0:0]
  1603 pts/1    S+     0:00 man vmstat
  1613 pts/1    S+     0:00 less -s
  2979 ?        S      0:00 [kworker/1:0]
  2994 ?        S      0:00 pickup -l -t unix -u
  3001 ?        S      0:00 [kworker/1:1]
  3002 ?        S      0:00 [kworker/0:1]
  3003 ?        S      0:00 [kworker/0:2]
  3005 ?        S      0:00 [kworker/1:2]
  3014 pts/0    R+     0:00 ps ax

ps aux 显示所有进程,完整输出

[root@lanquark demo]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.4 125736  4256 ?        Ss   Jun09   0:01 /usr/lib/systemd/systemd --switched-root --system -
root          2  0.0  0.0      0     0 ?        S    Jun09   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Jun09   0:00 [ksoftirqd/0]
...中间略...
root       1271  0.0  0.3 116316  3020 pts/1    Ss   Jun09   0:00 -bash
root       1403  0.0  0.0      0     0 ?        S    Jun09   0:14 [kworker/0:0]
root       1603  0.0  0.1 119208  1952 pts/1    S+   Jun09   0:00 man vmstat
root       1613  0.0  0.0 110260   952 pts/1    S+   Jun09   0:00 less -s
root       2979  0.0  0.0      0     0 ?        S    05:10   0:00 [kworker/1:0]
postfix    2994  0.0  0.4  89648  4016 ?        S    05:26   0:00 pickup -l -t unix -u
root       3001  0.0  0.0      0     0 ?        S    05:30   0:00 [kworker/1:1]
root       3003  0.0  0.0      0     0 ?        S    05:37   0:00 [kworker/0:2]
root       3005  0.0  0.0      0     0 ?        R    05:38   0:00 [kworker/1:2]
root       3015  0.0  0.0      0     0 ?        S    05:42   0:00 [kworker/0:1]
root       3016  0.0  0.1 151064  1832 pts/0    R+   05:43   0:00 ps aux

常见列标题

PID 进程ID

PRI 优先级

RSS 内存驻留空间大小(内存管理)

TTY 控制终端的完整名称

UID 用户标志

%CPU CPU(处理器)使用百分比

%MEM 真实内存使用百分比

JOBC 作业控制统计

SL 睡眠时间(单位为秒)

STAT 进程状态

进程状态包括:

D:不能中断的进程
R:run状态的进程
S:sleep状态的进程
s:主进程
T:暂停的进程
Z:僵尸进程
<:高优先级进程
N:低优先级进程
L:内存中被锁定了内存分页
l:多线程进程
+:前台进程


九、查看网络状态

netstat命令

通过netstat命令可以列出系统中与IP、TCP、UDP及ICMP等协议相关的统计信息。还可以用于检测各个端口的监听状态。

常用参数说明

-r 显示路由表,功能与route相同
-n 不解析域名,只是列出IP地址及端口
-a 列出所有的联机状态,包括tcp/udp UNIX socket等
-p 显示PID及程序名
-e 显示更多其他信息
-c 配置几秒后更新一次数据
-l 列出正在listen(监听)的服务的网络状态
-t 列出tcp数据包的连接
-u 列出udp数据包的连接

显示当前路由表

[root@lanquark ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 ens32
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 ens32

显示目前已经建立的所有的有效连接信息列表

[root@lanquark ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0     52 192.168.1.211:22        192.168.1.9:2068        ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
tcp6       0      0 :::3306                 :::*                    LISTEN     
udp        0      0 127.0.0.1:323           0.0.0.0:*                          
udp6       0      0 ::1:323                 :::*                               
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     11524    /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     22755    public/cleanup
unix  2      [ ACC ]     SEQPACKET  LISTENING     11540    /run/udev/control
unix  2      [ ]         DGRAM                    11542    /run/systemd/shutdownd
unix  2      [ ACC ]     STREAM     LISTENING     21147    private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     21150    private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     21153    private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     21156    private/defer
...中间略...
unix  3      [ ]         STREAM     CONNECTED     18050    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     21178    
unix  3      [ ]         STREAM     CONNECTED     17856    /run/systemd/journal/stdout
unix  2      [ ]         DGRAM                    17010    
unix  2      [ ]         DGRAM                    16946  

查看监听端口

[root@lanquark ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1121/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1372/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1121/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1372/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1310/mysqld         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           751/chronyd         
udp6       0      0 ::1:323                 :::*                                751/chronyd         
raw6       0      0 :::58                   :::*                    7           784/NetworkManager  
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     11524    1/systemd            /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     22755    1372/master          public/cleanup
unix  2      [ ACC ]     SEQPACKET  LISTENING     11540    1/systemd            /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     21147    1372/master          private/tlsmgr
...中间略...
unix  2      [ ACC ]     STREAM     LISTENING     21180    1372/master          public/showq
unix  2      [ ACC ]     STREAM     LISTENING     13769    1/systemd            /run/lvm/lvmetad.socket
unix  2      [ ACC ]     STREAM     LISTENING     22812    1310/mysqld          /tmp/mysql.sock
unix  2      [ ACC ]     STREAM     LISTENING     16351    735/VGAuthService    /var/run/vmware/guestServicePipe
unix  2      [ ACC ]     STREAM     LISTENING     16889    714/abrtd            /var/run/abrt/abrt.socket

只看tcp协议连接,不看socket

[root@lanquark ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1121/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1372/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1121/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1372/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1310/mysqld      

列出目前已经启动的TCP/UDP网络服务

[root@lanquark ~]# netstat -nltup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1121/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1372/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1121/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1372/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1310/mysqld         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           751/chronyd         
udp6       0      0 ::1:323                 :::*                                751/chronyd

查看tcp协议状态的命令

[root@lanquark ~]# netstat -an | awk '/^tcp/{++sta[$NF]}END{for(key in sta)print key,"\t",sta[key]}' 
LISTEN 	 5
ESTABLISHED 	 1

ss命令
ss 是 socket statistics 的缩写。顾名思义,ss 命令可以用来获取socket 统计信息,它可以显示和netstat 类似的内容。但 ss 的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。缺点是不会显示进程的名称。

语法:ss 参数
ss 参数 过滤

常用参数说明

-n 不解析服务名称
-r 解析主机名
-l 显示监听状态的套接字
-a 显示所有套接字
-t 仅显示tcp套接字
-u 仅显示udp套接字

显示TCP连接

[root@lanquark ~]# ss -t -a
State      Recv-Q Send-Q   Local Address:Port                    Peer Address:Port                
LISTEN     0      128                  *:ssh                                *:*                    
LISTEN     0      100          127.0.0.1:smtp                               *:*                    
ESTAB      0      0        192.168.1.211:ssh                      192.168.1.9:avauthsrvprtcl       
LISTEN     0      128                 :::ssh                               :::*                    
LISTEN     0      100                ::1:smtp                              :::*                    
LISTEN     0      80                  :::mysql                             :::*       

显示所有UDP sockets

[root@lanquark ~]# ss   -u  -a
State      Recv-Q Send-Q   Local Address:Port                    Peer Address:Port                
ESTAB      0      0        192.168.1.211:53905                  5.103.139.163:ntp                  
UNCONN     0      0            127.0.0.1:323                                *:*                    
UNCONN     0      0                  ::1:323                               :::*  

显示 sockets 摘要

[root@lanquark ~]# ss   -s
Total: 572 (kernel 1122)
TCP:   6 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*	  1122      -         -        
RAW	  1         0         1        
UDP	  2         1         1        
TCP	  6         3         3        
INET	  9         4         5        
FRAG	  0         0         0     

显示所有的联机状态

[root@lanquark ~]# ss -an
Netid  State      Recv-Q Send-Q  Local Address:Port                 Peer Address:Port              
nl     UNCONN     0      0                   0:0                                *                   

...中间略...
          
tcp    ESTAB      0      5376    192.168.1.211:22                    192.168.1.9:2068               
tcp    LISTEN     0      128                :::22                             :::*                  
tcp    LISTEN     0      100               ::1:25                             :::*                  
tcp    LISTEN     0      80                 :::3306                           :::*        

十、linux下抓包

tcpdump命令

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

不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将tcpdump进程终止才会停止抓包。

最小化安装默认没有安装tcpdump,需安装tcpdump软件包

[root@lanquark ~]# yum -y install tcpdump.x86_64

抓包选项:

-c:指定要抓取的包数量
-i interface:指定tcpdump需要监听的接口。若未指定该选项,将从系统接口列表中搜寻编号最小的已配置好的接口(不包括loopback接口,要抓取loopback接口使用tcpdump -i lo),
-n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析。
-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
-N:不打印出host的域名部分。例如tcpdump将会打印'nic'而不是'nic.ddn.mil'。
-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。
-w:将抓包数据输出到文件中而不是标准输出。可以同时配合"-G time"选项使得输出文件每time秒就自动切换到另一个文件。可通过"-r"选项载入这些文件以进行分析和打印。
-r:从给定的数据包文件中读取数据。使用"-"表示从标准输入中读取。

抓取指定网络接口所有的流量包

//为方便观察,只抓取5次
[root@lanquark ~]# tcpdump -c 5 -nn -i ens32
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens32, link-type EN10MB (Ethernet), capture size 262144 bytes
23:08:41.653674 IP 192.168.1.211.22 > 192.168.1.9.2068: Flags [P.], seq 3174207465:3174207677, ack 2481139789, win 296, length 212
23:08:41.653874 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 212, win 2048, length 0
23:08:41.653951 IP 192.168.1.211.22 > 192.168.1.9.2068: Flags [P.], seq 212:408, ack 1, win 296, length 196
23:08:41.654040 IP 192.168.1.211.22 > 192.168.1.9.2068: Flags [P.], seq 408:668, ack 1, win 296, length 260
23:08:41.654150 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 668, win 2053, length 0
5 packets captured
6 packets received by filter
0 packets dropped by kernel

抓取ping包

[root@lanquark ~]# tcpdump -c 5 -nn -i ens32 icmp 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens32, link-type EN10MB (Ethernet), capture size 262144 bytes
23:17:32.068866 IP 192.168.1.9 > 192.168.1.211: ICMP echo request, id 1, seq 1015, length 40
23:17:32.069009 IP 192.168.1.211 > 192.168.1.9: ICMP echo reply, id 1, seq 1015, length 40
23:17:33.071919 IP 192.168.1.9 > 192.168.1.211: ICMP echo request, id 1, seq 1016, length 40
23:17:33.072198 IP 192.168.1.211 > 192.168.1.9: ICMP echo reply, id 1, seq 1016, length 40
23:17:34.079352 IP 192.168.1.9 > 192.168.1.211: ICMP echo request, id 1, seq 1017, length 40
5 packets captured
6 packets received by filter
0 packets dropped by kernel

指定端口为22

[root@lanquark ~]# tcpdump -c 5 -nn -i ens32 port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens32, link-type EN10MB (Ethernet), capture size 262144 bytes
23:29:07.456966 IP 192.168.1.211.22 > 192.168.1.9.2068: Flags [P.], seq 3182328865:3182329077, ack 2481164789, win 318, length 212
23:29:07.457186 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 212, win 2053, length 0
23:29:07.457379 IP 192.168.1.211.22 > 192.168.1.9.2068: Flags [P.], seq 212:504, ack 1, win 318, length 292
23:29:07.457848 IP 192.168.1.211.22 > 192.168.1.9.2068: Flags [P.], seq 504:668, ack 1, win 318, length 164
23:29:07.457974 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 668, win 2051, length 0
5 packets captured
5 packets received by filter
0 packets dropped by kernel

指定多个条件

[root@lanquark ~]# tcpdump -c 5 -nn -i ens32 port 22 and host 192.168.1.9
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens32, link-type EN10MB (Ethernet), capture size 262144 bytes
23:31:40.918767 IP 192.168.1.211.22 > 192.168.1.9.2068: Flags [P.], seq 3182331785:3182331997, ack 2481166625, win 318, length 212
23:31:40.918954 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 212, win 2047, length 0
23:31:40.918994 IP 192.168.1.211.22 > 192.168.1.9.2068: Flags [P.], seq 212:504, ack 1, win 318, length 292
23:31:40.919120 IP 192.168.1.211.22 > 192.168.1.9.2068: Flags [P.], seq 504:668, ack 1, win 318, length 164
23:31:40.919232 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 668, win 2053, length 0
5 packets captured
6 packets received by filter
0 packets dropped by kernel

抓取到本机22端口包

[root@lanquark ~]#  tcpdump -c 10 -nn -i ens32 tcp dst port 22  
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens32, link-type EN10MB (Ethernet), capture size 262144 bytes
23:19:09.125587 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 3177829277, win 2053, length 0
23:19:09.175139 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 165, win 2052, length 0
23:19:09.226469 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 313, win 2051, length 0
23:19:09.278981 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 461, win 2051, length 0
23:19:09.331111 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 609, win 2050, length 0
23:19:09.383613 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 757, win 2050, length 0
23:19:09.435084 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 905, win 2049, length 0
23:19:09.486671 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 1053, win 2049, length 0
23:19:09.538120 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 1201, win 2048, length 0
23:19:09.589617 IP 192.168.1.9.2068 > 192.168.1.211.22: Flags [.], ack 1349, win 2047, length 0
10 packets captured
10 packets received by filter
0 packets dropped by kernel

解析包数据

[root@lanquark ~]# tcpdump -c 2 -q -XX -vvv -nn -i ens32 tcp dst port 22
tcpdump: listening on ens32, link-type EN10MB (Ethernet), capture size 262144 bytes
23:20:36.654263 IP (tos 0x0, ttl 128, id 9028, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.1.9.2068 > 192.168.1.211.22: tcp 0
	0x0000:  000c 292f 92ee 1c1b 0da8 e183 0800 4500  ..)/..........E.
	0x0010:  0028 2344 4000 8006 535f c0a8 0109 c0a8  .(#D@...S_......
	0x0020:  01d3 0814 0016 93e3 62a9 bd69 e0f9 5010  ........b..i..P.
	0x0030:  0804 8689 0000 0000 0000 0000            ............
23:20:36.705318 IP (tos 0x0, ttl 128, id 9029, offset 0, flags [DF], proto TCP (6), length 40)
    192.168.1.9.2068 > 192.168.1.211.22: tcp 0
	0x0000:  000c 292f 92ee 1c1b 0da8 e183 0800 4500  ..)/..........E.
	0x0010:  0028 2345 4000 8006 535e c0a8 0109 c0a8  .(#E@...S^......
	0x0020:  01d3 0814 0016 93e3 62a9 bd69 e2cd 5010  ........b..i..P.
	0x0030:  0802 84b7 0000 0000 0000 0000            ............
2 packets captured
3 packets received by filter
0 packets dropped by kernel

指定抓包数量和存放位置

[root@lanquark ~]# tcpdump -nn -i ens32 -c 10 -w /tmp/1.cap
tcpdump: listening on ens32, link-type EN10MB (Ethernet), capture size 262144 bytes
10 packets captured
10 packets received by filter
0 packets dropped by kernel

使用tcpdump -r命令查看1.cap内容

[root@lanquark ~]# tcpdump -r /tmp/1.cap 
reading from file /tmp/1.cap, link-type EN10MB (Ethernet)
23:22:24.839744 IP bogon.ssh > bogon.avauthsrvprtcl: Flags [P.], seq 3177835125:3177835273, ack 2481154401, win 296, length 148
23:22:24.839977 IP bogon.avauthsrvprtcl > bogon.ssh: Flags [.], ack 148, win 2047, length 0
23:22:25.444077 IP bogon.mdns > 224.0.0.251.mdns: 0*- [0q] 10/0/4 (Cache flush) PTR localhost.local., (Cache flush) TXT "deviceid=32:1e:d7:3d:d6:eb" "features=0x5A7FFFF7,0x1E" "flags=0x4" "model=AppleTV3,2" "pk=99FD4299889422515FBD27949E4E1E21B2AF50A454499E3D4BE75A4E0F55FE63" "pi=b08f5a79-db29-4384-b456-a4784d9e6055" "srcvers=220.68" "vv=2", PTR _airplay._tcp.local., PTR M-eM-.M-"M-eM-^NM-^EM-gM-^TM-5M-hM-'M-^F._airplay._tcp.local., (Cache flush) TXT "cn=0,1,3" "da=true" "et=0,3,5" "ft=0x5A7FFFF7,0x1E" "md=0,1,2" "am=AppleTV3,2" "pk=99FD4299889422515FBD27949E4E1E21B2AF50A454499E3D4BE75A4E0F55FE63" "sf=0x4" "tp=UDP" "vn=65537" "vs=220.68" "vv=2" "pw=false", PTR _raop._tcp.local., PTR 32:1e:d7:3d:d6:eb@M-eM-.M-"M-eM-^NM-^EM-gM-^TM-5M-hM-'M-^F._raop._tcp.local., (Cache flush) A 192.168.1.153, (Cache flush) SRV localhost.local.:7011 0 0, (Cache flush) SRV localhost.local.:47011 0 0 (757)
23:22:25.444277 IP bogon.mdns > bogon.mdns: 0*- [0q] 10/0/4 (Cache flush) PTR localhost.local., (Cache flush) TXT "deviceid=32:1e:d7:3d:d6:eb" "features=0x5A7FFFF7,0x1E" "flags=0x4" "model=AppleTV3,2" "pk=99FD4299889422515FBD27949E4E1E21B2AF50A454499E3D4BE75A4E0F55FE63" "pi=b08f5a79-db29-4384-b456-a4784d9e6055" "srcvers=220.68" "vv=2", PTR _airplay._tcp.local., PTR M-eM-.M-"M-eM-^NM-^EM-gM-^TM-5M-hM-'M-^F._airplay._tcp.local., (Cache flush) TXT "cn=0,1,3" "da=true" "et=0,3,5" "ft=0x5A7FFFF7,0x1E" "md=0,1,2" "am=AppleTV3,2" "pk=99FD4299889422515FBD27949E4E1E21B2AF50A454499E3D4BE75A4E0F55FE63" "sf=0x4" "tp=UDP" "vn=65537" "vs=220.68" "vv=2" "pw=false", PTR _raop._tcp.local., PTR 32:1e:d7:3d:d6:eb@M-eM-.M-"M-eM-^NM-^EM-gM-^TM-5M-hM-'M-^F._raop._tcp.local., (Cache flush) A 192.168.1.153, (Cache flush) SRV localhost.local.:7011 0 0, (Cache flush) SRV localhost.local.:47011 0 0 (757)
23:22:25.946465 IP bogon.55228 > 239.253.0.1.lhtp: UDP, length 171
23:22:26.110629 IP bogon.54514 > 255.255.255.255.7423: UDP, length 173
23:22:26.281494 IP 183.94.104.158.4562 > bogon.8558: UDP, length 31
23:22:26.281510 IP bogon.8558 > 183.94.104.158.4562: UDP, length 31
23:22:26.441221 IP bogon.49349 > 119.29.29.29.domain: 62080+ A? pan.baidu.com. (31)
23:22:26.456893 IP 119.29.29.29.domain > bogon.49349: 62080 2/0/0 CNAME yiyun.n.shifen.com., A 111.206.37.70 (76)

tshark命令

tsshark也是开源的抓包工具,很流行。有图形前端。

系统默认没有安装,需安装wareshark包

[root@lanquark ~]# yum -y install wireshark

用法

查看指定网卡80端口的1个web服务的访问情况(类似于web的访问日志):

[root@lanquark ~]# 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" 
tshark: -R without -2 is deprecated. For single-pass filtering use -Y.
Running as user "root" and group "root". This could be dangerous.
Capturing on 'nflog'
^C0 packets captured
//因当前没有安装web服务,所以没有结果

tsahrk参考链接:

https://www.wireshark.org/docs/man-pages/tshark.html

https://wiki.wireshark.org/

https://wiki.wireshark.org/CaptureFilters

https://wiki.wireshark.org/Statistics


十一、Linux网络相关

ifconfig命令

Centos7默认没有安装,需安装net-tools包

查看ip

[root@lanquark ~]# ifconfig
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.211  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::5114:2b77:d59a:bc78  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2f:92:ee  txqueuelen 1000  (Ethernet)
        RX packets 59711  bytes 28497195 (27.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 59181  bytes 15741371 (15.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

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 1  (Local Loopback)
        RX packets 64  bytes 5312 (5.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 64  bytes 5312 (5.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
//显示指定接口
[root@lanquark ~]# ifconfig ens32
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.211  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::5114:2b77:d59a:bc78  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2f:92:ee  txqueuelen 1000  (Ethernet)
        RX packets 59778  bytes 28511154 (27.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 59207  bytes 15745059 (15.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

设定临时IP

[root@lanquark ~]# ifconfig ens32 192.168.1.222 255.255.255.0

ifdown和ifup命令 停止和启动网卡。

//注意不要分开执行,这样会导致你连不上去。
[root@lanquark ~]# ifdown ens32 && ifup ens32
Device 'ens32' successfully disconnected.
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

虚拟网卡设置

[root@lanquark ~]# cd /etc/sysconfig/network-scripts/
[root@lanquark network-scripts]# cp ifcfg-ens32 ifcfg-ens32\:0
[root@lanquark network-scripts]# vim !$
vim ifcfg-ens32\:0
  1 TYPE="Ethernet"                                                                                 
  2 PROXY_METHOD="none"
  3 BROWSER_ONLY="no"
  4 BOOTPROTO="none"
  5 DEFROUTE="yes"
  6 IPV4_FAILURE_FATAL="no"
  7 IPV6INIT="yes"
  8 IPV6_AUTOCONF="yes"
  9 IPV6_DEFROUTE="yes"
 10 IPV6_FAILURE_FATAL="no"
 11 IPV6_ADDR_GEN_MODE="stable-privacy"
 12 NAME="ens32"
 13 UUID="f78a6b73-f367-498a-b3ee-47f6b29ceab4"
 14 DEVICE="ens32:0"
 15 ONBOOT="yes"
 16 IPADDR="192.168.1.211"
 17 PREFIX="24"
 18 GATEWAY="192.168.1.1"
 19 DNS1="8.8.8.8"
"ifcfg-ens32:0" 21L, 419C                                                         1,1           Top
  1 TYPE="Ethernet"
  2 PROXY_METHOD="none"
  3 BROWSER_ONLY="no"
  4 BOOTPROTO="none"
  5 DEFROUTE="yes"
  6 IPV4_FAILURE_FATAL="no"
  7 IPV6INIT="yes"
  8 IPV6_AUTOCONF="yes"
  9 IPV6_DEFROUTE="yes"
 10 IPV6_FAILURE_FATAL="no"
 11 IPV6_ADDR_GEN_MODE="stable-privacy"
 12 NAME="ens32:0"
 13 UUID="f78a6b73-f367-498a-b3ee-47f6b29ceab4"
 14 DEVICE="ens32:0"
 15 ONBOOT="yes"
 16 IPADDR="192.168.1.212"
 17 PREFIX="24"                                                                           
 21 IPV6_PRIVACY="no"
"ifcfg-ens32:0" 21L, 424C written   
//将设备名改为与配置文件名一致ens32:0
//网关,dns不需要,删除即可。
//保存退出
//重启网卡
[root@lanquark ~]# ifdown ens32 && ifup ens32
Device 'ens32' successfully disconnected.
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
[root@lanquark ~]# ifconfig
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.211  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::5114:2b77:d59a:bc78  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2f:92:ee  txqueuelen 1000  (Ethernet)
        RX packets 62799  bytes 29182237 (27.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 60343  bytes 15911826 (15.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
//虚拟网卡正常出现
ens32:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.212  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:0c:29:2f:92:ee  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 1  (Local Loopback)
        RX packets 64  bytes 5312 (5.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 64  bytes 5312 (5.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

mii-tool命令查看网卡是否连接

[root@lanquark ~]# mii-tool ens32
ens32: negotiated 1000baseT-FD flow-control, link ok

ethtool命令查看网卡是否连接

[root@lanquark ~]# ethtool ens32
Settings for ens32:
	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

hostnamectl修改主机名

[root@lanquark ~]# hostnamectl set-hostname lanqaurk.com
//相应的配置文件为/etc/hostname

DNS配置文件:/etc/resolv.conf

hosts文件: /etc/hosts


十二、扩展

三次握手过程示意图

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。

(1)第一次握手:
Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

(2)第二次握手:
Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包
发送给Client以确认连接请求,Server进入SYN_RCVD状态。

(3)第三次握手:
Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,
ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

四次挥手过程示意图

由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,
收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。
首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。

第一次挥手:
Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:
Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:
Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:
Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

posted on 2018-06-11 00:37  kennminn  阅读(748)  评论(0编辑  收藏  举报