Linux命令-top

简介

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

top 显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用、内存使用、执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

参数含义统计信息区前五行是系统整体的统计信息。

第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

参数

意义

09:51:29

当前时间

up 423 days

已经运行天数

15:28

系统运行时间,格式为时:分

5 users

当前登录用户数

load average: 0.09, 0.04, 0.05

系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二行是进程信息。其内容如下:

参数

意义

143 total

进程总数

2 running

正在运行的进程数

138 sleeping

睡眠的进程数

0 stopped

停止的进程数

3 zombie

僵尸进程数

第三行是CPU信息。其内容如下:

参数

意义

1.0 us

用户空间占用CPU百分比

0.3 sy

内核空间占用CPU百分比

0.0 ni

用户进程空间内改变过优先级的进程占用CPU百分比

97.7 id

空闲CPU百分比

1.0 wa

等待输入输出的CPU时间百分比

0.0 hi

硬件CPU中断占用百分比

0.0 si

软中断占用百分比

0.0 st

虚拟机占用百分比

最后两行是内存信息。其内容如下:

参数

意义

KiB Mem:

1016656 total

物理内存总量

936036 used

使用的物理内存总量

80620 free

空闲内存总量

77144 buffers

用作内核缓存的内存量

KiB Swap:

0 total

交换区总量

0 used

使用的交换区总量

0 free

空闲交换区总量

178128 cached Mem

缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号

列名

含义

1

PID

进程id

2

PPID

父进程id

3

RUSER

真正的用户名

4

UID

进程所有者的用户id

5

USER

进程所有者的用户名

6

GROUP

进程所有者的组名

7

TTY

启动进程的终端名。不是从终端启动的进程则显示为 ?

8

PR

优先级

9

NI

nice值。负值表示高优先级,正值表示低优先级

10

P

最后使用的CPU,仅在多CPU环境下有意义

11

%CPU

上次更新到现在的CPU时间占用百分比

12

TIME

进程使用的CPU时间总计,单位秒

13

TIME+

进程使用的CPU时间总计,单位1/100秒

14

%MEM

进程使用的物理内存百分比

15

VIRT

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

16

SWAP

进程使用的虚拟内存中,被换出的大小,单位kb。

17

RES

进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

18

CODE

可执行代码占用的物理内存大小,单位kb

19

DATA

可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

20

SHR

共享内存大小,单位kb

21

nFLT

页面错误次数

22

nDRT

最后一次写入到现在,被修改过的页面数。

23

S

进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)

24

COMMAND

命令名/命令行

25

WCHAN

若该进程在睡眠,则显示睡眠中的系统函数名

26

Flags

任务标志,参考 sched.h

默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。

可以通过下面的快捷键来更改显示内容。 更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。 按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。 按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

命令使用

top 使用格式

top [-] [d] [q] [c] [S] [s] [i] [n] [b]

参数说明

参数

说明

d

改变显示的更新速度,或是在交互式指令列( interactive command)按 s

q

没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行

c

切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来

s

安全模式,将交互式指令取消, 避免潜在的危机

i

不显示任何闲置 (idle) 或无用 (zombie) 的行程

n

更新的次数,完成后将会退出 top

b

批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内

交互命令

命令

说明

h / ?

显示帮助画面,给出一些简短的命令总结说明

k

终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽

i

忽略闲置和僵死进程。这是一个开关式命令

q

退出程序

r

重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10

S

切换到累计模式

s

改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加

f / F

从当前显示中添加或者删除项目

o / O

改变显示项目的顺序

l

切换显示平均负载和启动时间信息

m

切换显示内存信息

t

切换显示进程和CPU状态信息

c

切换显示命令名称和完整命令行

M

根据驻留内存大小进行排序

P

根据CPU使用百分比大小进行排序

T

根据时间/累计时间进行排序

W

将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法

常用操作

命令

说明

top

每隔5秒显式所有进程的资源占用情况

top -d 2

每隔2秒显式所有进程的资源占用情况

top -c

每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)

top -p 12345 -p 6789

每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况

top -d 2 -c -p 123456

每隔2秒显示pid是12345的进程的资源使用情况,并显示该进程启动的命令行参数

Load Average

平均负载 (load average) 是指系统的运行队列的平均利用率,也可以认为是可运行进程的平均数。通过系统命令”w” 或”top”可以查看当前 load average 情况。

第一位:表示最近1分钟平均负载; 第二位:表示最近5分钟平均负载; 第三位:表示最近15分钟平均负载。

假设我们的系统是单CPU单内核的,把它比喻成是一条单向马路,把CPU任务比作汽车。当车不多的时候,load < 1;当车占满整个马路的时候 load = 1;当马路都站满了,而且马路外还堆满了汽车的时候,load > 1。

我们经常会发现服务器Load > 1但是运行仍然不错,那是因为服务器是多核处理器。假设我们服务器CPU是2核,那么将意味我们拥有2条马路,我们的Load = 2时,所有马路都跑满车辆。

  • 0.7 < load < 1:此时是不错的状态,如果进来更多的汽车,你的马路仍然可以应付;
  • load = 1:你的马路即将拥堵,而且没有更多的资源额外的任务,赶紧看看发生了什么吧;
  • load > 5:非常严重拥堵,我们的马路非常繁忙,每辆车都无法很快的运行。

通常我们先看15分钟load,如果load很高,再看1分钟和5分钟负载,查看是否有下降趋势。1分钟负载值 > 1,那么我们不用担心,但是如果15分钟负载都超过1,我们要赶紧看看发生了什么事情。所以我们要根据实际情况查看这三个值。

参考文章: Linux系统中的load average linux 平均负载 load average 的含义 linux的top命令参数详解 Linux top命令

原文发布于微信公众号 - 云计算与大数据(heidcloud)

原文发表时间:2018-07-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏京东技术

开发属于自己的插件 | IDEA &amp; Android Studio插件开发指南

谷轩宇——从事安卓开发,目前效力于通天塔技术开放组是否曾经被ide重复繁琐的操作所困扰,又或者没有心仪的UI控件而难受。那么请阅读这篇文章,掌握idea插件的开...

1K20
来自专栏java思维导图

缓存穿透,缓存击穿,缓存雪崩解决方案分析

设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。

15730
来自专栏枕边书

Gotorch - 多机定时任务管理系统

前言 最近在学习 Go 语言,遵循着 “学一门语言最好的方式是使用它” 的理念,想着用 Go 来实现些什么,刚好工作中一直有一个比较让我烦恼的问题,于是用 Go...

67590
来自专栏互联网大杂烩

操作系统-进程和线程

进程线程的区别 1、进程是什么? 是具有一定独立功能的程序、它是系统进行资源分配和调度的一个独立单位,重点在系统调度和单独的单位,也就是说进程是可以独立运行...

15340
来自专栏生信宝典

一网打进Linux下那些查找命令

查找是我们每天都在做的事情,早上醒来找下手机,出门之前查下公交,坐下之后查下资料,分析数据查下模式。 查找文件,查找信息,查找错误是应用起来更为具体的一些工作,...

582100
来自专栏前端杂货铺

Nodejs cluster模块深入探究

由表及里 HTTP服务器用于响应来自客户端的请求,当客户端请求数逐渐增大时服务端的处理机制有多种,如tomcat的多线程、nginx的事件循环等。而对于nod...

577100
来自专栏用户2442861的专栏

操作系统八内存管理

      CPU可以在一个cpu时钟内执行一个或多个其内置寄存器的指令。而访问内存需多个cpu时钟。由于内存频繁访问,可以再cpu与内存之间增加高速缓存

10310
来自专栏Golang语言社区

一个go语言实现的短链接服务

一个go语言实现的短链接服务 首先,博客转移到 wusay.org 了,去年没交费,博客都没了。。。刚刚恢复过来,以前的文章没了,慢慢补吧。 什么是短链接服务 ...

669100
来自专栏小狼的世界

在Codeigniter框架中使用NuSOAP

NuSOAP 是一组功能强大的PHP类,这个工具的发布让使用和创建SOAP消息变得相当简单。 NuSOAP有Dirtrich Ayala编写,可以无缝的与许多最...

9510
来自专栏JavaEdge

操作系统之文件管理一、文件与文件系统二、文件控制块和文件目录三、文件的物理结构四、文件系统的实现五、文件系统实例(UNIX)六、UNIX文件系统一、文件系统实例(FAT)二、文件操作的实现三、文件系统

61760

扫码关注云+社区

领取腾讯云代金券