系统工具(uptime,vmstat,iostat,top)

linux 系统工具


top vmstat iostat uptime

介绍四个工具,uptime用于查看系统负载,vmstat用于查看虚拟内存状态,iostat用于统计CPU和设备IO信息,top工具动态显示进程状态,还包括系统负载虚拟内存状态cpu和内存使用率。我们将对几个工具逐一进行说明。

uptime

显示内容

  • 当前时间
  • 系统已启动的时间
  • 当前上线人数
  • 系统平均负载(1、5、10分钟的平均负载,一般不会超过1)

系统平均负载:
指在特定时间间隔内运行队列中的平均进程数,通常每个CPU内核的当前活动进程数不大于3, 那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题。如果linux主机是1个双核CPU,当LoadAverage为6的时候说明机器已经被充分使用。
我们可以使用命令uptime查看系统负载情况。

[root@CT731 ~]#uptime
 20:37:03 up 2 days,  2:54,  5 users,  load average: 0.00, 0.01, 0.05

uptime还有一些小的选项,比如uptime -p显示开机了多久,精确到分钟。还有uptime -s显示系统开机时间。

[root@CT731 hexo]#uptime -p
up 2 days, 3 hours, 9 minutes
[root@CT731 hexo]#uptime -s
2017-09-07 17:42:47

vmstat

vmstat命令的含义为显示虚拟内存状态Viryual Memorn Statics,同时,它可以报告关于进程内存I/O等系统整体运行状态,如下:

[root@CT731 ~]#vmstat 
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   2456 550500    984 679940    0    0     2     6   34   37  0  0 99  0  0

在上面的代码中,我们看到了很多的项:
1.procs是表示进程状态,r代表可运行(正在运行或等待运行)进程的个数,和核心数有关。b代表处于不可中断睡眠态的进程个数(被阻塞的队列的长度)。

2.memory表示内存状态,其中swpd是指交换内存的使用总量,free是空闲物理内存总量,buff指用户buffer的内存总量,cache是用于cache的内存总量。

3.swap是指交换分区的状态,si代表从磁盘交换进内存的数据速率(kb/s)[从交换分区到内存]so代表从内存交换至磁盘的数据速率(kb/s)[从内存到交换分区]

4.io项中,bi代表从块设备读入数据到系统的速率(kb/s)[从块设备读数据到内存]bo代表保存数据至块设备的速率(kb/s)[从内存度数据到块设备]

5.system项中,in代表interrupts 中断速率,包括时钟,cs代表context switch 进程切换速率。

6.cpu项中,us代表Time spent running non-kernel code,sy代表Time spent running kernel code,id代表Time spent idle. Linux 2.5.41前,包括IO-wait time,wa代表Time spent waiting for IO. 2.5.41前,包括in idle,st代表Time stolen from a virtual machine. 2.6.11前, unknown。

此外,vmstat还有一些选项,vmstat 2表示每2秒刷新一次,vmstat 2 5表示每2秒刷新一次,共刷新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   2456 552148    984 682056    0    0     1     6   34   37  0  0 99  0  0
 0  0   2456 552024    984 682056    0    0     0     0   50   70  0  0 100  0  0
 0  0   2456 552024    984 682056    0    0     0     0   55   81  0  0 100  0  0
 0  0   2456 552024    984 682056    0    0     0     0   50   72  0  0 100  0  0
 0  0   2456 552024    984 682056    0    0     0     0   47   67  0  0 100  0  0

vmstat -s则会以表的形式显示上面的信息。

[root@CT731 ~]#vmstat -s
      1867292 K total memory
       632352 K used memory
       195712 K active memory
       792804 K inactive memory
       551900 K free memory
         ... ...

iostat

iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
选项:
-c:仅显示CPU使用情况
-d:仅显示设备利用率
-k:显示状态以千字节每秒为单位,而不使用块每秒
-m:显示状态以兆字节每秒为单位
-p:仅显示块设备和所有被使用的其他分区的状态
-t:显示每个报告产生时的时间
-x:显示扩展状态
我使用iostat命令,显示以下信息:

[root@CT731 ~]#iostat
Linux 3.10.0-514.el7.x86_64 (CT731)     09/10/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.34    0.00    0.17    0.03    0.00   99.46

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.47         4.95        21.76    1027014    4514774
scd0              0.01         0.50         0.00     103986          0

我们可以从中看到cpu的部分信息,和磁盘的信息。在磁盘信息中:
tps:该设备每秒的传输次数
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。
同样的,我们可以使用iostat 2iostat 2 5动态刷新信息。

[root@CT731 ~]#iostat 2 5
Linux 3.10.0-514.el7.x86_64 (CT731)     09/10/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.33    0.00    0.17    0.03    0.00   99.46

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.47         4.93        21.67    1027014    4515997
scd0              0.01         0.50         0.00     103986          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    0.00    0.00  100.00

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
scd0              0.00         0.00         0.00          0          0

接下来,我们看看选项中的示例:
iostat -c 仅显示CPU的信息

[root@CT731 ~]#iostat -c
Linux 3.10.0-514.el7.x86_64 (CT731)     09/10/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.33    0.00    0.17    0.03    0.00   99.46

iostat -d 仅显示设备利用率

[root@CT731 ~]#iostat -d
Linux 3.10.0-514.el7.x86_64 (CT731)     09/10/2017      _x86_64_        (4 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.47         4.91        21.60    1027014    4516738
scd0              0.01         0.50         0.00     103986          0

iostat -p 仅显示块设备和所有被使用的其他分区的状态

[root@CT731 ~]#iostat -p
Linux 3.10.0-514.el7.x86_64 (CT731)     09/10/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.33    0.00    0.17    0.03    0.00   99.46

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.47         4.90        21.55    1027014    4517404
sda1              0.01         0.12         0.01      26036       2124
sda2              0.34         4.28        18.83     897486    3946502
sda3              0.11         0.48         2.69      99685     564769
sda4              0.00         0.00         0.00         18          0
sda5              0.00         0.01         0.02       2628       4008
scd0              0.01         0.50         0.00     103986          0

iostat -x:显示扩展状态

[root@CT731 ~]#iostat -x
Linux 3.10.0-514.el7.x86_64 (CT731)     09/10/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.33    0.00    0.17    0.03    0.00   99.46

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.20    0.17    0.30     4.90    21.54   112.94     0.03   57.20   16.40   80.30   4.04   0.19
scd0              0.00     0.00    0.01    0.00     0.50     0.00   129.42     0.00    3.22    3.22    0.00   2.70   0.00

rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);
wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
rKB/s:每秒向设备发出的读取请求数
wKB/s:每秒向设备发出的写入请求数
avgrq-sz: 平均请求扇区的大小
avgqu-sz: 是平均请求队列的长度。毫无疑问,队列长度越短越好。
await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
svctm: 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长, 系统上运行的应用程序将变慢。
%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

在这里我们在介绍一个命令pmap,它用于报告进程的内存映射关系,是Linux上调试及运维一个相当不错的工具。
选项:
-x:显示扩展格式;
-d:显示设备格式;
-q:不显示头尾行;
我们配合pidof命令查找ping 172.17.0.1的进程ID,查看其映射关系。

[root@CT731 ~]#pidof ping
123245
[root@CT731 ~]#pmap 123245
123245:   ping 127.0.0.1
00007efdbd000000 103588K r---- locale-archive
00007efdc3529000     84K r-x-- libz.so.1.2.7
00007efdc353e000   2044K ----- libz.so.1.2.7
00007efdc373d000      4K r---- libz.so.1.2.7
... ...
00007efdc5076000      4K r---- ping
00007efdc5077000      4K rw--- ping
00007fffe27f7000      8K r-x--   [ anon ]
ffffffffff600000      4K r-x--   [ anon ]
 total           127912K

top

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

top - 16:36:51 up 2 days, 10:34,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 192 total,   1 running, 191 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1867292 total,   571368 free,   591152 used,   704772 buff/cache
KiB Swap:  4194300 total,  4191848 free,     2452 used.   994920 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND            
 21517 root      20   0  377524  18108  14144 S   0.3  1.0   3:25.88 vmtoolsd           
     1 root      20   0  193628   5504   3208 S   0.0  0.3   0:37.55 systemd            
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.43 kthreadd     
     3 root      20   0       0      0      0 S   0.0  0.0   0:28.06 ksoftirqd/0

%CPU一栏中:
us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间

top命令还有选项可用,top -d #[1]指定刷新时间,默认三秒,top -b全部显示所有进程,top -n #[1]刷新多少次后退出。

还有就是我们可以直接使用内置命令对命令的显示内容进程调整,以便得到我们想要的结果:
我们可以使用P以占据的CPU百分比[%CPU]进行排序,M以占据内存百分比[%MEM]排序,T以累积占据CPU时长[TIME+]排序。
对于首部的信息,我们可以以l命令对uptime信息关闭或打开,以t命令对cup和进程状态以不同的格式显示,或者关闭;以m命令对memory信息以不同格式进行显示或关闭;或者1命令更改CPU信息的显示格式。
除了这些外,还有s更改刷新时间,k置顶终止指定进程,W保存文件,q退出。


  1. 这里的#代表数字[0-]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,332评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,930评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,204评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,348评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,356评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,447评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,862评论 3 394
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,516评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,710评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,518评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,582评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,295评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,848评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,881评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,121评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,737评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,280评论 2 341

推荐阅读更多精彩内容