Luckylau's Blog

linux系统常用监控命令

uptime

1
15:24:23 up 84 days, 17 min, 6 users, load average: 0.67, 0.66, 0.72

15:24:23 //系统当前时间

up 84 days, 17 min //主机已运行时间,时间越大,说明你的机器越稳定

6 users //用户连接数,是总连接数而不是用户数

load average //在过去1分钟、5分钟、15分钟内系统的load值

top

1
2
3
4
5
6
top - 15:28:53 up 84 days, 22 min, 6 users, load average: 0.19, 0.44, 0.61
Tasks: 135 total, 1 running, 134 sleeping, 0 stopped, 0 zombie
%Cpu(s): 6.3 us, 0.6 sy, 0.0 ni, 93.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8010424 total, 131496 free, 7583244 used, 295684 buff/cache
KiB Swap: 4194300 total, 2250812 free, 1943488 used. 127160 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

第一行同uptime

第二行任务(进程) 系统现在共有135个进程,1个运行,134个休眠,停止0个,僵尸有0个

第三行

us,用户时间(User Time)表示CPU执行用户进程所占用的时间,通常情况下希望us的占比越高越好

sy,系统时间(System Time)表示CPU自内核态所花费的时间,sy占比比较高通常意味着系统在某些方面设计得不合理,比如频繁的系统调用导致的用户态和内核态的频繁切换

ni,Nice时间(Nice Time)表示系统在调整进程优先级的时候所花费的时间

id,空闲时间(Idle Time)表示系统处于空闲期,等待进程运行,这个过程所占用的时间。当然,我们希望id的占比越低越好

wa,等待时间(Waiting Time)表示CPU在等待I/O操作所花费的时间,系统不应该花费大量的时间来进行等待,否则便表示可能有某个地方设计不合理

hi,硬件中断处理时间(Hard Irq Time)表示系统处理硬件中断所占用的时间

si,软件中断处理时间(Soft Irq Time)表示系统处理软件中断所占用的时间

st,丢失时间(Steal Time)表示被强制等待虚拟CPU的时间

第四行 内存状态 ,与win概念不一样,linux有一定特殊性,其中有一个思想便是内存利用率最大化,内核会将剩余的内存申请为cached,而cached不属于free范畴。因此,当系统运行时间较长时,会发现cached这块区域比较大,对于有频繁文件读/写操作的系统,这种现象更为明显。

第五行 swap交换分区,对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

第六行

PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

df -h

磁盘剩余空间也是一个非常关键的指标,如果磁盘没有足够的剩余空间,正常的日志写入以及系统I/O都将无法进行。

iostat -d -k

1
2
3
Linux 3.10.0-514.21.2.el7.x86_64 (iz2zegbc4593l7v9u0xalwz) 11/24/2017 _x86_64_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 3.65 30.76 28.70 223300253 208343752

磁盘I/O的繁忙程度也是一个重要的系统指标

-d表示查看磁盘使用状况,-k表示以KB为单位 显示Device表示设备名称、tps表示每秒处理的I/O请求数、kB_read/s表示每秒从设备读取的数据量、kB_wrtn/s表示美标向设备写入的数据量、kB_read表示读取的数据总量、kB_wrtn表示写入的数据总量。(瞬时)

free -m

1
2
3
total used free shared buff/cache available
Mem: 7822 7402 147 0 272 135
Swap: 4095 1913 2182

程序运行时的数据加载、线程并发、I/O缓冲等,都依赖于内存,可用内存的大小决定了程序是否能正常运行以及运行的性能

vmstat

1
2
3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 1959152 133228 7736 283268 1 1 8 7 0 0 9 1 90 0 0

si表示每秒从磁盘交换到内存的数据量,单位是KB/s,so表示每秒从内存交换到磁盘的数据量,单位也是KB/s (瞬时)

Luckylau wechat
如果对您有价值,看官可以打赏的!