Linux常用命令--系统硬件信息及其监控

摘要

  • 本文介绍Linux查看系统硬件信息及其监控等相关命令

  • 本文基于CentOS8(x86_64)

uname :查看系统版本信息

1
$ uname -a

查看主机的信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 查看主机名称
$ hostmame

# 查看当前主机的信息
$ hostnamectl
Static hostname: hanqf-blog
Icon name: computer-vm
Chassis: vm
Machine ID: 202101200223344556694309112419322
Boot ID: 755cd8b4b04e22336677884bba9101604
Virtualization: kvm
Operating System: Alibaba Cloud Linux (Aliyun Linux) 2.1903 LTS (Hunting Beagle)
Kernel: Linux 4.19.91-22.2.al7.x86_64
Architecture: x86-64

# 设置主机名,重启后生效
$ sudo hostnamectl set-hostname newName
# 或者直接编辑/etc/hostname,也是重启才生效

# 立即生效,重连ssh即可,不需要重启
$ echo newName > /proc/sys/kernel/hostname

# 查看本地化设置
$ localectl
System Locale: LANG=en_US.UTF-8
VC Keymap: us
X11 Layout: n/a

# 设置本地化参数。
$ sudo localectl set-locale LANG=zh_CN.utf8
$ sudo localectl set-keymap zh_CN

# 查看当前时区设置
$ timedatectl

# 显示所有可用的时区
$ timedatectl list-timezones

# 设置当前时区
$ sudo timedatectl set-timezone America/New_York
$ sudo timedatectl set-time YYYY-MM-DD
$ sudo timedatectl set-time HH:MM:SS

查看网卡和路由信息

1
2
3
4
# 网卡
$ ifconfig
# 路由
$ route

查看cpu信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
$ cat /proc/cpuinfo

processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz
stepping : 7
microcode : 0x1
cpu MHz : 2499.998
cache size : 36608 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat avx512_vnni
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit
bogomips : 4999.99
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

# 解释如下:
processor:系统中逻辑处理核心的编号,从0开始。对于单核处理器,该类将其视为 CPU 编号,对于多核处理器,它可以是物理内核,也可以是使用超线程技术的虚拟逻辑内核。(processor内核内部使用的对象,不一定绑定到物理设备,它们可能都具有相同的 physical id
vendor_id:CPU制造商。
cpu family:CPU 产品系列代号。
mode:cpu属于其系列中的哪一代。
model name:CPU的名称及其编号,标称频率。
stepping:CPU属于生产更新版本。
cpu MHz:实际CPU频率。
cache size:CPU二级缓存的大小。
physical id:单个物理CPU标号。
siblings:单个物理 CPU 的逻辑 CPU 数量。siblings = cpu 核心 * [2]。
core id:当前所在CPU中的物理内核id
cpu cores:逻辑核所在CPU的物理核数。比如这里有2个cpu core,对应的core id是0、1。
apicid:用于区分不同逻辑核心的编号。系统中每个逻辑核的编号必须不同,编号不一定是连续的。
fpu:是否有浮点单元。(Floating Point Unit)
fpu_exception:是否支持浮点计算异常。
cpuid level:在执行cpuid指令之前,eax寄存器中的值会根据不同的值返回不同的内容。
wp:表示当前CPU是否支持内核态用户空间写保护。(Write Protection)
flags:当前CPU支持的功能,例如浮点单元 (FPU) 的存在和处理 MMX 指令的能力。。
bogomips:粗略测量的 CPU 速度(每秒百万条指令)。
clflush size:每个flush缓存的大小单位。
cache_alignment:缓存地址对齐单元。
address sizes:可访问地址空间的数量。
power management:支持电源管理。
  • 查看CPU型号

1
$ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq
  • 查看物理cpu个数

1
$ cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
  • 查看cpu是几核,即一个cpu的核心数

1
$ cat /proc/cpuinfo | grep "cores"| uniq
  • 查看逻辑cpu的个数

1
2
3
$ cat /proc/cpuinfo | grep "processor" | wc -l
# 或者
$ nproc

小贴士
/proc:目录中存放进程PID命名的目录以及系统相关信息文件,如:
cpuinfo :cup信息
meminfo :内存信息
partitions :硬盘分区

lscpu :可以显示CPU的架构、型号、核心数、线程数、频率等信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 2
Core(s) per socket: 1
座: 1
NUMA 节点: 1
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 85
型号名称: Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz
步进: 7
CPU MHz: 2499.998
BogoMIPS: 4999.99
超管理器厂商: KVM
虚拟化类型: 完全
L1d 缓存: 32K
L1i 缓存: 32K
L2 缓存: 1024K
L3 缓存: 36608K
NUMA 节点0 CPU: 0,1
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat avx512_vnni

uptime :查看系统运行时间和cpu负载

1
2
3
4
5
6
7
8
$ uptime
14:12:52 up 2 days, 20:41, 1 user, load average: 0.06, 0.03, 0.01

# 说明:
14:12:52 当前时间
up 2 days, 20:41 系统运行了多久
1 user 当前登录用户数
load average: 0.06, 0.03, 0.01 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

w :查看系统运行时间和cpu负载以及当前用户登录信息

1
2
3
4
$ w
17:35:25 up 3 days, 3 min, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 1.120.160.30 13:58 0.00s 0.12s 0.12s -bash

free :查看内存信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 显示内存使用情况,默认单位k
$ free
total used free shared buff/cache available
Mem: 912836 100016 72608 460 740212 667376
Swap: 0 0 0

# 说明:
total :物理内存总量
used :已经使用的物理内存总量
free :空闲内存总量
shared :是多个进程共享的内存总数;
buff/cache :用作内核缓存的内存量

选项 含义
-b 以 Byte(字节)为单位,显示内存使用情况。
-k 以 KB 为单位,显示内存使用情况,此选项是 free 命令的默认选项。
-m 以 MB 为单位,显示内存使用情况。
-g 以 GB 为单位,显示内存使用情况。
-t 在输出的最终结果中,输出内存和 swap 分区的总量。
-o 不显示系统缓冲区这一列。
-s 间隔秒数 根据指定的间隔时间,持续显示内存使用情况。

df :查看硬盘信息

1
2
3
4
5
6
7
8
$ df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 436M 0 436M 0% /dev
tmpfs tmpfs 446M 0 446M 0% /dev/shm
tmpfs tmpfs 446M 456K 446M 1% /run
tmpfs tmpfs 446M 0 446M 0% /sys/fs/cgroup
/dev/vda1 ext4 20G 14G 5.3G 72% /
tmpfs tmpfs 90M 0 90M 0% /run/user/0

top :动态显示进程状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# 动态显示进程状态,默认每3秒刷新一次
$ top
top - 14:08:03 up 2 days, 20:36, 1 user, load average: 0.06, 0.03, 0.01
Tasks: 87 total, 1 running, 47 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 912836 total, 65564 free, 99648 used, 747624 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 667600 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
558 root 20 0 17832 1772 1288 S 0.1 0.2 0:45.25 assist_daemon
585 root 20 0 813912 10888 5104 S 0.1 1.2 3:51.47 aliyun-service
587 root 20 0 733348 9636 4604 S 0.1 1.1 0:11.96 rsyslogd
1 root 20 0 51640 4432 3156 S 0.0 0.5 0:33.44 systemd

# 说明:
第一行为任务队列信息,同 uptime
第二行为进程信息:
total :进程总数
running :正在运行的进程数
sleeping :睡眠的进程数
stopped :停止的进程数
zombie :僵尸进程数
第三行为CPU信息:
0.1 us :用户空间占用CPU百分比
0.0 sy :内核空间占用CPU百分比
0.0 ni :用户进程空间内改变过优先级的进程占用CPU百分比
99.9 id :空闲CPU百分比
0.0 wa :等待输入输出的CPU时间百分比,通过查看 CPU 的 wa% 值来判断当前磁盘 IO 性能,如果这个数值过大,很可能是磁盘 IO 太高了,当然也可能是其他原因,例如网络 IO 过高等。
0.0 hi :硬件CPU中断占用百分比
0.0 si :软中断占用百分比
0.0 st :虚拟机占用百分比
第四行和第五行为内存信息:
Mem:
912836 total 物理内存总量
65564 free 空闲内存总量
99648 used 使用的物理内存总量
747624 buff/cache 用作内核缓存的内存量
Swap:
0 total 交换区总量
0 free 空闲交换区总量
0 used 使用的交换区总量
667600 avail Mem 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

之后是进程信息区:默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。
运行top后按f会查看到全部的展示项,这里只对部分展示项进行说明
序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程所有者的用户id
e USER 进程所有者的用户名
f GROUP 进程所有者的组名
g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
h PR 优先级。默认20。这个优先级对应实时进程,只使用1-99号优先级队列,序号越大优先级越高,0号留给普通进程使用
i NI nice值。默认0。负值表示高优先级,正值表示低优先级
j P 最后使用的CPU,仅在多CPU环境下有意义
k %CPU 上次更新到现在的CPU时间占用百分比
l TIME 进程使用的CPU时间总计,单位精确到秒, 3:51 表示 3分51秒
m TIME+ 进程使用的CPU时间总计,单位精确到1/100秒,3:51.47 表示 3分51秒多
n %MEM 进程使用的物理内存百分比
o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r CODE 可执行代码占用的物理内存大小,单位kb
s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t SHR 共享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一次写入到现在,被修改过的页面数。
w S 进程状态(D=不可中断的睡眠状态,I=空闲内核线程,R=运行,S=睡眠,T=因作业控制信号而停止,Z=僵尸进程)
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 任务标志,参考 sched.h
0 PGRP 进程组id

# 交互命令:运行top后,可以键入如下指令与top进行交互
h :获得帮助
q :退出程序。
d :指定刷新时间
m :切换内存信息显示效果
t :切换显示进程和CPU状态信息。
c :切换显示命令名称和完整命令行。
u :查看指定用户的进程
k :终止执行中的进程 pid,系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
r :重新设置进程优先级 n pid,系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
翻页:
Shift + < :上翻
Shift + > :下翻
Ctrl+L 擦除并且重写屏幕。
i :忽略闲置和僵死进程。这是一个开关式命令。
l :切换显示平均负载和启动时间信息。
M :根据驻留内存大小进行排序。
P :根据CPU使用百分比大小进行排序。
T :根据时间/累计时间进行排序。
W :将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
f :从当前显示中添加或者删除项目。按d添加或删除,esc返回。此时也可以调整每一列的显示顺序,按右键会将当前项全选,然后上下调整位置后按回车即可。默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列
o :过滤指定的内容,如过滤用户则输入:USER=username,匹配时采用模糊匹配,多次输入o会在当前过滤基础上增加新的过滤条件,q退出
S :切换到累计模式。


# top使用格式
top [-] [d] [p] [q] [c] [C] [S] [s]

#参数说明
d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
p 通过指定监控进程ID来仅仅监控某个进程的状态。
S 指定累计模式
s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i 使top不显示任何闲置或者僵死进程。
c 显示整个命令行而不只是显示命令名

# 示例
top //每隔5秒显式所有进程的资源占用情况
top -d 2 //每隔2秒显式所有进程的资源占用情况
top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
top -p进程1的ID -p进程2的id -p进程3的id …… //查看某几个进程的状态

sar :查看 CPU 、内存、磁盘、网络等性能指标

  • sar 命令是分析系统瓶颈的神器,可以用来查看 CPU 、内存、磁盘、网络等性能。

  • 如果不存在sar这个命令,可以通过如下命令安装:yum install sysstat

  • 查看磁盘性能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 查看当前磁盘性能,-d参数代表查看磁盘性能,-p参数代表将 dev 设备按照 sda,sdb……名称显示,1是间隔1秒,2是采集2次
$ sar -d -p 1 2

07时35分57秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07时35分58秒 xvda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

07时35分58秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07时35分59秒 xvda 12.00 0.00 155.00 12.92 0.01 0.67 1.67 2.00

平均时间: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
平均时间: xvda 6.00 0.00 77.50 12.92 0.00 0.67 1.67 1.00

# 说明:
tps :每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求, 一次传输的大小是不确定的.
rd_sec/s :每秒读扇区的次数.
wr_sec/s :每秒写扇区的次数.
avgrq-sz :平均每次设备I/O操作的数据大小(扇区).
avgqu-sz :磁盘请求队列的平均长度.
await :从请求磁盘操作到 系统完成处理,每次请求的平均消耗时间 包括请求队列等待时间,单位是毫秒(1秒=1000毫秒).
svctm :系统处理每次请求的平均时间 不包括在请求队列中消耗的时间.
%util :I/O请求占CPU的百分比,比率越大,说明越饱和.


avgqu-sz 的值较低时,设备的利用率较高
%util I/O请求占用的CPU百分比,值越高,说明I/O越慢。

对于磁盘 IO 性能,一般有如下评判标准:
正常情况下 svctm 应该是小于 await 值的,而 svctm 的大小和磁盘性能有关,CPU 、内存的负荷也会对 svctm 值造成影响,过多的请求也会间接的导致 svctm 值的增加。
await 值的大小一般取决与 svctm 的值和 I/O 队列长度以 及I/O 请求模式,如果 svctm 的值与 await 很接近,表示几乎没有 I/O 等待,磁盘性能很好,如果 await 的值远高于 svctm 的值,则表示 I/O 队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。
%util 项的值也是衡量磁盘 I/O 的一个重要指标,如果 %util 接近 100% ,表示磁盘产生的 I/O 请求太多,I/O 系统已经满负荷的在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能,可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题。

# 如果想继续查看以前的报告;可以查看保存在/var/log/sa/下的sar日志,保留最近30天的日志: 日志名称以sa开头,日期号结尾,如11号的日志为sa11
$ sar -d -p -f /var/log/sa/sa11 | more

00时00分01秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
00时10分01秒 xvda 10.67 0.13 190.20 17.84 0.12 11.08 3.33 3.55
00时20分01秒 xvda 11.40 0.08 234.10 20.54 0.07 6.07 3.26 3.72
00时30分01秒 xvda 11.05 0.19 200.59 18.17 0.03 2.82 2.51 2.77
00时40分01秒 xvda 10.78 0.00 225.89 20.96 0.14 12.59 4.64 5.00
00时50分01秒 xvda 10.53 0.00 183.95 17.47 0.04 4.16 3.04 3.20
01时00分01秒 xvda 10.58 0.00 187.13 17.68 0.12 11.18 4.52 4.78
01时10分01秒 xvda 10.74 0.00 187.12 17.42 0.09 8.20 4.76 5.11
01时20分01秒 xvda 11.52 0.05 212.70 18.47 0.06 4.83 2.52 2.90
01时30分01秒 xvda 10.69 0.05 191.77 17.94 0.04 3.43 2.65 2.83
  • 查看cpu使用率指标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 查看当前的cpu指标,-u指cpu使用率,默认就是-u,1是间隔1秒,3是采集3次
$ sar -u 1 3

15时48分53秒 CPU %user %nice %system %iowait %steal %idle
15时48分54秒 all 0.50 0.00 0.50 0.00 0.00 99.00
15时48分55秒 all 0.00 0.00 0.00 0.00 0.00 100.00
15时48分56秒 all 0.00 0.00 0.00 0.00 0.00 100.00
平均时间: all 0.17 0.00 0.17 0.00 0.00 99.67

# 查看全天的cpu指标
$ sar -u -p

00时00分01秒 CPU %user %nice %system %iowait %steal %idle
00时10分01秒 all 0.08 0.00 0.08 0.00 0.00 99.84
00时20分01秒 all 0.08 0.00 0.07 0.00 0.00 99.85
00时30分01秒 all 0.07 0.00 0.08 0.00 0.00 99.84
00时40分01秒 all 0.15 0.00 0.08 0.00 0.00 99.78
00时50分01秒 all 0.07 0.00 0.07 0.00 0.00 99.85
01时00分01秒 all 0.07 0.00 0.08 0.00 0.00 99.85
01时10分01秒 all 0.67 0.00 0.12 0.01 0.00 99.20

# 说明:
CPU :all表示统计所有CPU的平均值
%user :显示在用户级别(application)运行使用 CPU 总时间的百分比
%nice :改变过优先级的进程的CPU使用率
%system :内核空间的CPU使用率, 在核心级别(kernel)运行所使用CPU总时间的百分比
%iowait :显示用于等待I/O操作占用CPU总时间的百分比
%steal :管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比
%idle :显示 CPU空闲时间占用CPU总时间的百分比

# 主要监控如下两项:
%iowait 过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求
%idle 过低表示CPU使用比较严重,需要结合内存使用等情况判断CPU是否瓶颈。

# 查看以前的报告,保存在/var/log/sa/下的sar日志,保留最近30天的日志: 日志名称以sa开头,日期号结尾,如11号的日志为sa11
sar -u -f /var/log/sa/sa11 | more
  • 查看cpu负载指标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看当前的cpu的负载指标,-q指cpu负载,1是间隔1秒,3是采集3次
$ sar -q 1 3

16时00分32秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
16时00分33秒 0 127 0.00 0.00 0.00 0
16时00分34秒 0 127 0.00 0.00 0.00 0
16时00分35秒 0 127 0.00 0.00 0.00 0
平均时间: 0 127 0.00 0.00 0.00 0

# 说明:
runq-sz :运行队列的长度(等待运行的进程数)
plist_sz :进程列表中进程(processes)和线程(threads)的数量
Idavg-1 :最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值
ldavg_5 :最后5分钟的CPU平均负载
ldavg-15 :最后15分钟的CPU平均负载

# 查看以前的报告,保存在/var/log/sa/下的sar日志,保留最近30天的日志: 日志名称以sa开头,日期号结尾,如11号的日志为sa11
sar -q -f /var/log/sa/sa11 | more
  • 内存监控

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ sar -r 1 3

16时05分03秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
16时05分04秒 75000 837836 91.78 48728 649444 471312 51.63 180868 577236 36
16时05分05秒 75000 837836 91.78 48728 649444 471312 51.63 180868 577240 36
16时05分06秒 75000 837836 91.78 48728 649444 471312 51.63 180868 577240 36
平均时间: 75000 837836 91.78 48728 649444 471312 51.63 180868 577239 36

# 说明:
kbmemfree :这个值和free命令中的free值基本一致, 所以它不包括buffer和cache的空间。
kbmemused :这个值和free命令中的used值基本一致, 所以它包括buffer和cache的空间。
%memused :这个值是kbmemused和内存总量(不包括swap)的一个百分比。
kbbuffers和kbcached :这两个值就是free命令中的buffer和cache.
kbcommit :保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)。
%commit :这个值是kbcommit与内存总量(包括swap)的一个百分比。(可以看做内存使用量的百分比)

# 查看以前的报告,保存在/var/log/sa/下的sar日志,保留最近30天的日志: 日志名称以sa开头,日期号结尾,如11号的日志为sa11
sar -r -f /var/log/sa/sa11 | more
  • 网络监控

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# -n选项可以汇报网络相关信息,可用的值有很多,我们查询最多的就是 DEV(网卡信息)
$ sar -n DEV 1 2

16时23分03秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
16时23分04秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16时23分04秒 eth0 2.00 0.00 0.13 0.00 0.00 0.00 0.00

16时23分04秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
16时23分05秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16时23分05秒 eth0 3.00 3.00 0.19 0.32 0.00 0.00 0.00

平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: eth0 2.50 1.50 0.16 0.16 0.00 0.00 0.00

# 说明:
IFACE:就是网络设备的名称;
rxpck/s:每秒钟接收到的包数目
txpck/s:每秒钟发送出去的包数目
rxbyt/s:每秒钟接收到的字节数
txbyt/s:每秒钟发送出去的字节数
rxcmp/s:每秒钟接收到的压缩包数目
txcmp/s:每秒钟发送出去的压缩包数目
txmcst/s:每秒钟接收到的多播包的包数目

# -n 的值:
1.DEV :网卡,主要查看这一项
2.EDEV :网卡 (错误)
3.NFS :NFS 客户端
4.NFSD :NFS 服务器
5.SOCK :Sockets (套接字) (v4)
6.IP :IP 流 (v4)
7.EIP :IP 流 (v4) (错误)
8.ICMP :ICMP 流 (v4)
9.EICMP :ICMP 流 (v4) (错误)
10.TCP :TCP 流 (v4)
11.ETCP :TCP 流 (v4) (错误)
12.UDP :UDP 流 (v4)
13.SOCK6 :Sockets (套接字) (v6)
14.IP6 :IP 流 (v6)
15.EIP6 :IP 流 (v6) (错误)
16.ICMP6 :ICMP 流 (v6)
17.EICMP6 :ICMP 流 (v6) (错误)
18.UDP6 :UDP 流 (v6)
  • 通过 -o 将监控信息输出到文件,然后通过 -f 查看

1
2
$ sar -u 1 3 -o sar.txt
$ sar -f sar.txt