学习一些linux监控命令

uptime :

用来快速查看系统平均负载,能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

vmstate:

显示虚拟内存状态(“Viryual Memor Statics”),可以报告关于进程、内存、I/O等系统整体运行状态。

语法:vmstat(选项)(参数)

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
 0  0    320  42188 167332 1534368    0    0     4     7    1    0  0  0 99  0  0
 0  0    320  42188 167332 1534392    0    0     0     0 1002   39  0  0 100  0  0
  • vmstat 3,3表示每隔3秒刷新一次。

procs :进程

  • r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
  • b(block): 表示由于IO等待而block的进程数量。

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(context switchs): 每秒上下文切换数。

注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示)

  • us: 用户进程执行时间百分比(user time)

us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

  • sy: 内核系统进程执行时间百分比(system time)

sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

  • wa: IO等待时间百分比

wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

  • id(Idle): 空闲时间百分比

free:

显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

free -b/-k/-m : 以Byte为单位显示内存使用情况/ 以kb为单位显示内存使用情况 / 以mb为单位显示内存使用情况.

free -m
             total       used       free     shared    buffers     cached
Mem:          2016       1973         42          0        163       1497
-/+ buffers/cache:        312       1703
Swap:         4094          0       4094
  • total:内存总数;
  • used:已经使用的内存数;
  • free:空闲的内存数;
  • shared:当前已经废弃不用;
  • buffers Buffer:缓存内存数;
  • cached Page:缓存内存数。

total=used+free

  • (-buffers/cache) used内存数:第一部分Mem行中的 used – buffers – cached
  • (+buffers/cache) free内存数: 第一部分Mem行中的 free + buffers + cached

可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

iostat:

用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

# iostat -x /vda
Linux 3.10.0-693.2.2.el7.x86_64 (iz2zec6q7af34l736i2uuvz)       05/22/2018      _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.21    0.00    0.14    0.00    0.00   99.64

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

说明:第二行是系统信息和监测时间,第三行和第四行显示CPU使用情况,后面为I/O输出的信息。

  • Device :监测设备名称。
  • rrqm/s & wrqm/s:每秒需要读取 & 写入需求的数量。
  • r/s & w/s :每秒实际读取 & 写入需求的数量。
  • rsec/s & wsec/s : 每秒读取 & 写入区段的数量。
  • rkB/s & wKB/s :每秒实际读取 & 写入的大小,单位为KB。
  • avgqu-sz:向设备发出的请求的平均数量。值大于 1 说明已经饱和了(虽说设备可以并行处理请求,尤其是由多个磁盘组成的虚拟设备。)
  • await :以毫秒为单位的 I/O 平均消耗时间。这是应用程序消耗的实际时间,因为它包括了排队时间和处理时间。比预期更大的平均时间可能意味着设备的饱和,或设备出了问题。
  • svctm : I/O需求完成的平均时间。
  • %util:设备利用率。这个值是一个显示出该设备在工作时每秒处于忙碌状态的百分比。若值大于 60%,通常表明性能不佳(可以从 await 中看出),虽然它取决于设备本身。值接近 100% 通常意味着已饱和。

mpstat:

主要用于多CPU环境下,它显示各个可用CPU的状态系你想。这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。

语法:mpstat(选项)(参数)

选项:
-P:指定CPU编号。

参数:
间隔时间:每次报告的间隔时间(秒);
次数:显示报告的次数。

netstat:

用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

参数:

-a或--all:显示所有连线中的Socket;
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:显示监控中的服务器的Socket;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-r或--route:显示Routing Table;
-s或--statistice:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同。

top:

可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

# top
top - 15:34:34 up 107 days,  4:41,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 167 total,   1 running, 166 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1016164 total,    72840 free,   498860 used,   444464 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   318488 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                           
19807 root      20   0  202884  20040   1632 S  0.7  2.0 115:00.97 python                                                            
32361 root      20   0  532304  15084   2136 S  0.3  1.5  85:54.58 docker-containe                                                   
    1 root      20   0  125336   3336   1996 S  0.0  0.3   0:59.97 systemd                                                           
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.09 kthreadd  

解释:

top - 15:34:346[当前系统时间],
107 days[系统已经运行了16天],
1 user[个用户当前登录],
load average:0.00, 0.01, 0.05[系统负载,即任务队列的平均长度]
Tasks: 167 total[总进程数],
1 running[正在运行的进程数],
166 sleeping[睡眠的进程数],
0 stopped[停止的进程数],
0 zombie[冻结进程数],
%Cpu(s) [cpu指标],
KiB Mem[物理内存总量,以kb为单位]

你可能感兴趣的:(liunx相关)