linux监控命令各字段含义详解

大多数Linux发行版本都装备了大量的监控工具,这些工具提供了能用作取得相关信息和系统活动的量度指标。下面我们将详细解释命令中各字段的含义。


分类

网络类:netstat、ss

进程类:ps

cpu:mpstat、uptime

内存:free、vmstat、pmap

磁盘:iostat

综合:top、sar


1.top - 进程活动

[root@node2 ~]# top
top - 16:33:07 up  3:01,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 154 total,   1 running, 153 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
Mem:   2054528k total,  1891708k used,   162820k free,   102968k buffers
Swap:  2621432k total,        8k used,  2621424k free,  1310284k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                  
13103 root      20   0 15036 1264  944 R  0.3  0.1   0:00.01 top                                                      
    1 root      20   0 19356 1444 1132 S  0.0  0.1   0:01.37 init                                                     
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                 
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0

PID:进程的唯一的进程ID

USER:这个进程的执行者的身份

PR:这个进程的优先级,RT的意思是realtime,表示这是个实时进程

NI:这个任务的nice值

VIRT:这个进程占用的虚拟内存大小,包括这个进程所有的代码、数据、共享库以及被置换到swap分区中的页

Linux中,页(page)是内核中内存基本管理单元,每个page的内存大小是固定的,对于x86来说,page是4k

RES:进程占用的物理内存大小,不包括swap

SHR:进程占用的共享内存的大小,共享内存就是多个进程可能都可以使用的内存空间

S:进程的状态,D=无法中断式睡眠,R=正在运行,S=睡眠状态,T=停止状态,Z=僵尸状态

TIME+:占用的CPU的时间,例如:第一个是0.01s,第二个是1.37s


2.vmstat - 系统活动、硬件以及系统信息

[root@node2 ~]# 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
 0  0      8 162828 103224 1310288    0    0   854   453   78  252  1  1 94  4  0
 0  0      8 162820 103224 1310288    0    0     0     0   45   21  0  0 100  0  0

proc(r):等待运行的进程的数量

proc(b):处于无法中断式睡眠的进程的数量

memory(swpd):已使用的swap分区的数量

memory(free):可用的内存大小

memory(buff):用作buff的内存的大小

memory(cache):用作cache的内存的大小

区别:Buffers(缓冲区)为还没有写入硬盘,cached(缓存)为已被从硬盘中读取和存入硬盘以备使用。

swap(si):每秒从磁盘的swap分区读到内存的数量

swap(so):每秒从内存写到swap分区的内存大小

io(bi):每秒从磁盘读取的块数

io(bo):每秒写入磁盘的块数

system(in):每秒中断数,包括时钟中断

system(cs):每秒上下文切换的数量

cpu(us):用户进程执行时间

cpu(sy):系统进程执行时间

cpu(id):空闲时间

cpu(wa):IO等待的时间

cpu(st):虚拟机占用的时间,安装了KVM等虚拟化并开启了虚拟机,虚拟机占用的CPU


PS:如果system(in)比较高,而system(cs)比较低,这时就要看proc(r),即run queue的数量,如果这个数量也比较低,说明某个进程可能霸占着CPU(不断请求资源)。

如果system(in)比较低,而system(cs)比较高,正在运行的应用程序调用了大量的系统调用(system call)。


3.uptime

[root@node2 ~]# uptime
 17:15:14 up  3:43,  3 users,  load average: 0.00, 0.00, 0.00

17:15:14指当前的系统时间

up  3:43:开机3小时43分钟了

3 users:当前有3个用户在线

load average:过去1min、5min、15分钟系统的平均负载

一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重。


4.ps - 显示进程

[root@node2 ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  19356  1444 ?        Ss   13:31   0:01 /sbin/init
[root@node2 ~]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 13:31 ?        00:00:01 /sbin/init

VSZ:进程占用的虚拟内存大小,单位KB

RSS:进程占用的物理内存,不包括swap,单位KB

STAT:进程的状态,S: sleeping | s: session leader | <: high priority | N:Low priority

l: multithread | +: 前台进程组中的进程 | D: uninterruptible sleeping | R: running or runnable | T: stopped | Z: zombie

START:进程开始的时间

TIME:进程累积占用CPU的时间

COMMAND:开启该进程的命令,加了[ ]表示是内核调度的进程

PPID:该进程的父进程的ID

C:就是cpu%,可以使用dd if=/dev/zero of=/dev/null进行测试

STIME:和START相同


5.free - 查看内存

[root@mysql ~]# free
             total       used       free     shared    buffers     cached
Mem:       1914684     646936    1267748          0      11360      68468
-/+ buffers/cache:     567108    1347576
Swap:      4095992          0    4095992


6.iostat - cpu负载,硬盘活动

[root@oracle ~]# iostat 1 5
Linux 3.0.101 (oracle)  02/17/2014      _x86_64_        (1 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.21    0.00    0.12    0.07    0.00   99.59
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
scd0              0.00         0.00         0.00        184          0
sda               1.71         3.46        40.10    1868770   21654300
dm-0              3.20         3.44        40.09    1860106   21649128
dm-1              0.00         0.00         0.01       2576       5144

%user:用户占用的CPU使用率的百分比

%nice:调度用户进程nice所占用的CPU使用率的百分比

%system:系统占用的CPU使用率的百分比

%iowait:系统有一个未解决的磁盘I/O请求占用的CPU使用率的百分比

%steal:安装了KVM等虚拟化并开启了虚拟机,虚拟机占用的CPU

%idle:空闲的CPU使用率的百分比

tps:每秒传输的数据量,后面几个比较好理解,不提了



7.mpstat - 查看cpu的状态

[root@oracle ~]# mpstat 1 5
Linux 3.0.101 (oracle)  02/17/2014      _x86_64_        (1 CPU)
07:44:41 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
07:44:42 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
07:44:43 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
07:44:44 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
07:44:45 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
07:44:46 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00


8.pmap - 进程的内存使用

[root@oracle ~]# pmap -x 30772
30772:   sshd: root     
Address           Kbytes     RSS   Dirty Mode   Mapping
00007f667e501000    1280       4       4 rw-s-  zero (deleted)
00007f667e641000      16      16       0 r-x--  pam_limits.so
00007f667e645000    2044       0       0 -----  pam_limits.so
#pmap -x PID
[root@oracle ~]# pmap -d 30779
30779:   sshd: root@pts/0,pts/1
Address           Kbytes Mode  Offset           Device    Mapping
00007fcc21679000    1280 rw-s- 0000000000000000 000:00004 zero (deleted)
00007fcc217b9000      16 r-x-- 0000000000000000 0fd:00000 pam_limits.so
00007fcc217bd000    2044 ----- 0000000000004000 0fd:00000 pam_limits.so

Address:内存开始地址

Kbytes:占用内存的字节数(KB)

RSS:保留内存的字节数(KB)

Dirty:脏页的字节数(包括共享和私有的)(KB)

Mode:内存的权限:read、write、execute、shared、private (写时复制)

Mapping:占用内存的文件、或[anon](分配的内存)、或[stack](堆栈)

Offset:文件偏移

Device:设备名,主设备号:从设备号(major:minor)


9.netstat - 网络相关信息

[root@oracle ~]# netstat -tunlp
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      1280/sshd         
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1122/cupsd        
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1368/master       
tcp        0      0 0.0.0.0:49755               0.0.0.0:*                   LISTEN      1090/rpc.statd    
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1046/rpcbind      
tcp        0      0 :::22                       :::*                        LISTEN      1280/sshd


10.ss - 网络相关

可以显示网络套接字信息,和netstat差不多,具体可以看使用帮助


11.sar - 综合监控

Alias sar=’LANG=C sar’

Sar -q     报告CPU的负载信息

Sar -b     报告磁盘I/O和传输速率

Sar -P 0   报告第一个核心的详细信息

Sar -n DEV|EDEV  DEV是报告网络的状态

                EDEV是报告网络错误的状态,正常的情况下都是0



你可能感兴趣的:(linux监控命令各字段含义详解)