运维常用命令基础(一)
第十三课 运维基础(一)
目录
一、使用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
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/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状态,完成四次挥手。