【图文教程】监控系统命令

监控系统命令1. W命令2. vmstat命令3. top命令4. sar命令5. nload命令6. 监控io性能iostat命令iotop命令7. free命令8. ps命令9. netstat命令10. tcpdump命令tshark命令11. Linux网络相关命令12. 扩展1. W命令w含义:查看当前系统的负载。学习如何监控系统状态,是因为作为一个运维工程师需要了解 Lin...
摘要由CSDN通过智能技术生成

1. w命令

w含义:用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

学习如何监控系统状态,是因为作为一个运维工程师需要了解 Linux 系统运行时的各种信息和状态,当出现问题的时候就能够查找出问题的所在,这样才能对症下药的去解决。

  • w 命令可以查看当前系统的负载

相信所有的 linux 管理员最常用的命令就是这个 w 了,该命令显示的信息还是蛮丰富的。我们最应该关注的应该是第一行中的 load average :后面的三个数值,第一个数值表示 1 分钟内系统的平均负载值;第二个数值表示 5 分钟内系统的平均负载值;第三个数值表示 15 分钟系统的平均负载值。

在这里插入图片描述

[root@sc ~]# w
 12:45:05 up  1:50,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      10:56    1:48m  0.05s  0.05s -bash
root     pts/0    192.168.94.1     10:57    1.00s  0.10s  0.00s w


第一行显示系统的汇总信息,字段分别表示系统当前时间、系统运行时间、登陆系统用户总数及系统平均负载信息。对于如上图显示的字段意义为:

12:45:05                           #表示执行 w 的时间是在下午124505秒。
up  1:50                           #表示系统运行1小时50分。
2 users                            #表示当前系统登陆用户总数为 2。
load average: 0.00, 0.01, 0.05     #与后面的数字一起表示系统在过去 1510 分钟内的负载程度,数值越小,系统负载越轻。

从第二行开始构成一个登录用户信息列表,共有8个栏目,分别显示各个用户正在做的事情及该用户所占用的系统资源:

USER                               #显示登陆用户帐号名。用户重复登陆,该帐号也会重复出现。
TTY                                #用户登陆所用的终端。
FROM                               #显示用户在何处登陆系统。     
LOGIN@                             #是 LOGIN AT 的意思,表示登陆进入系统的时间。
IDLE                               #用户空闲时间,从用户上一次任务结束后,开始记时。
JCPU                               #以终端代号来区分,表示在这段时间内,所有与该终端相关的进程任务所耗费的 CPU 时间。
PCPU                               #指 WHAT 域的任务执行后耗费的 CPU 时间。
WHAT                               #表示当前执行的任务。

查看某用户是否登陆系统用户很多的时候,可以在 w 后面加上某个用户名,则会查看该用户执行任务的情况。

在这里插入图片描述

  • 使用 cat /proc/cpuinfo 此命令可查看系统的 CPU 数量,显示的是逻辑 CPU 数量,不是物理 CPU 数量

如果CPU 数量为 0 那么数值不超过 1 是最理想,也就是说负载数值不超过 CPU 的数量是最好的,如果负载数值大于 CPU 数量的话,那么就会有进程需要进行等待。

在这里插入图片描述

  • lscpu命令 查看 cpu 汇总详细信息
[root@master proc]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 61
Model name:            Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
Stepping:              4
CPU MHz:               2699.797
BogoMIPS:              5399.59
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu 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 ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt arat spec_ctrl intel_stibp flush_l1d arch_capabilities
  • uptime 命令也能够查看系统负载情况,不过查看不了用户的登录信息,所以大部分情况下都是用 w 命令

在这里插入图片描述

2. vmstat命令

vmstat介绍:可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析(综合工具,断定瓶颈点)。

  • 当系统负载值偏高的时候,CPU 不够用了,想要知道是哪些进程在使用着 CPU,可以使用 vmstat 命令查看

在这里插入图片描述

  • 一般使用 vmstat 命令的时候会加个数字 1 ,表示每一秒显示一次,动态的显示信息也可以

在这里插入图片描述

  • 也可以再加一个数字定义显示几次就结束,例如我只需要显示 5 次就结束

在这里插入图片描述

[root@sc ~]# vmstat 1 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 698288   2076 160956    0    0    13     2   32   60  0  0 100  0  0
 0  0      0 698288   2076 160956    0    0     0     0   55   74  0  0 100  0  0
 0  0      0 698288   2076 160956    0    0     0     0   37   53  0  1 99  0  0
 0  0      0 698288   2076 160956    0    0     0     0   30   34  0  0 100  0  0
 0  0      0 698288   2076 160956    0    0     0     0   31   47  0  0 100  0  0

Procs(进程):
r:(run,运行) 表示运行或等待 CPU 时间片的进程数。
b:(block,块)表示等待资源的进程数,这个资源指的是 I/O、内存等。

Memory(内存):
swpd:当内存不够时,系统可以拿出内存总的一部分数据临时放到 swap 交换分区里去。如果 swpd 值一直交换时,说明交换分区和内存在频繁的交换数据,代表内存不够了。
free:表示当前空闲的内存数量,单位为 KB。
buff:表示(即将写入磁盘的)缓冲大小,单位为 KB。
cache:表示(从磁盘中读取的)缓存大小,单位为 KB。

swap(虚拟磁盘交换分区):
si:有多少 k 的块数据,从 swap 进入到内存中。
so:有多少 k 的块数据,从内存中进到 swap。
注意:如果 swpd 在频繁变换时,这两个值肯定也会变动。

IO(磁盘):
bi:有多少 k 的数据,从磁盘进入到内存中。
bo:有多少 k 的数据,从内存吸入到磁盘。
注意:随机磁盘读写的时候,这 2 个值越大(如超出1024k),能看到 CPUIO 等待的值也会越大。

system(系统):
in:表示在某一时间间隔内观测到的每秒设备的中断次数。
cs:表示每秒产生的上下文切换数。
注意:这两个数值很大时,说明磁盘再频繁的读写。跟 CPU 和内存比,磁盘是很慢的,如果很频繁的读些数据会导致 b 列的增加。因为有很多进程在等待磁盘。

CPU(以百分比表示):
us:用户级别的,数字不会超过 100,百分比表示用户的资源占用 CPU 的百分比,
如果数字大于 50,说明系统肯定资源不够。
sy:系统本身的一些进程、服务、占用资源的百分比。
id:表示 CPU 处于空闲状态的时间百分比,us+sy+id+wa=st=100。 
wa:wait 有多少进程在等待 CPU 的百分比。
st:表示被偷走的 CPU 所占百分比(一般都为0,不用关注)。

3. top命令

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

  • top 命令可以具体查看进程使用资源情况,top 命令是三秒钟更新一次信息,是动态显示的

在这里插入图片描述

[root@sc ~]# top
top - 14:56:20 up  1:28,  3 users,  load average: 0.00, 0.01, 0.05
Tasks:  99 total,   1 running,  98 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1005628 total,   706416 free,   138456 used,   160756 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   695476 avail Mem 

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND       

第一行:top - 14:56:20 up  1:28,  3 users,  load average: 0.00, 0.01, 0.05

14:56:20:当前时间。
up  1:28:系统已运行的时间。
3 users:当前登录用户的数量。
load average: 0.00, 0.01, 0.05:相应最近1515分钟内的平均负载。

第二行:Tasks:  99 total,   1 running,  98 sleeping,   0 stopped,   0 zombie

系统现在total(共计)99个进程。
其中处于running(运行)中的有1个。
98个在休眠(sleep)。
stoped状态的有0个。
zombie状态(僵尸)的有0个。

第三行:%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

us            #user,运行(未调整优先级的) 用户进程的CPU时间
sy            #system,运行内核进程的CPU时间
ni    		  #niced,运行已调整优先级的用户进程的CPU时间
wa    		  #IO wait,用于等待IO完成的CPU时间
hi            #处理硬件中断的CPU时间
si            #处理软件中断的CPU时间
st            #这个虚拟机被hypervisor偷去的CPU时间
(译注:如果当前处于一个 hypervisor 下的 vm ,实际上 hypervisor 也是要消耗一部分 CPU 处理时间的)。

第四行:KiB Mem :  1005628 total,   706416 free,   138456 used,   160756 buff/cache

Men物理内存:
1005628k total — 物理内存总量(1005M)
706416k free — 空闲内存总量(706M)
138456k used — 使用中的内存总量(138M)
160756k buff/cache — 缓存的内存量 (106M)

第五行:KiB Swap:  2097148 total,  2097148 free,        0 used.   695476 avail Mem

Swap交换分区:
2097148k total — 交换区总量(2097M)
2097148k free — 空闲交换区总量(2097M)
0k used — 使用的交换区总量(0695476k avail Mem — 可用内存(69M)

第六行:PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND       

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

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

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

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

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

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

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

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

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

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

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

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

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

还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组 ID 和其他更多的信息。
  • top 里按 Shift+m 使用内存使用率来排序,同样的是由高到低

在这里插入图片描述

  • top 里按 Shift+p 切换回按CPU排序

在这里插入图片描述

  • top 里按数字 1,会列出所有的逻辑 CPU 使用情况

在这里插入图片描述

再按 1 则切换回平均值的查看方式:

在这里插入图片描述

  • top -c 可以看到具体的进程、命令、全局的路径

在这里插入图片描述

  • top -bn1 可以静态地显示,会一次性地把所有的进程信息都列出来,一般适合在写脚本的时候使用

在这里插入图片描述

4. sar命令

sar介绍:监控系统状态(外号:瑞士军刀)。

  • sar 是一个非常全面的分析系统状态的命令,sar 被称做 Linux 系统里的“瑞士军刀”,也即是说这个命令的功能非常的复杂和丰富࿰
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值