首页 > 编程知识 正文

使用top命令查看和控制进程,top命令结果详解

时间:2023-05-04 07:35:02 阅读:49920 作者:636

top命令主要用于显示有关进程的信息,还提供系统平均负载、cpu信息和内存信息。 以下屏幕快照显示了top命令缺省提供的信息。

系统平均负载

top命令输出的第一行是系统的平均负载,这与uptime命令的输出相同。

13:05:49表示系统的当前时间。

up 7 days显示自系统上次启动以来的总正常运行时间。

1 user表示当前系统上只有一个登录用户。

loadaverage:01、0.04和0.00表示系统平均负载,最后三个数字分别表示最后一分钟的系统平均负载、最后五分钟的系统平均负载和最后十五分钟的系统平均负载。

小写字母I控制是否显示系统的平均负载信息。

任务信息摘要

在linux系统中,进程和线程统称为任务。 第二行信息是当前系统中所有任务的统计信息。

Tasks:270 total表示当前系统的进程总数。

1 running表示当前系统上有一个正在运行的进程。

269 sleeping表示当前系统有269个休眠过程。

0 stopped表示停止状态的进程数为0。

0 zombie表示处于僵硬状态的进程数为0。

CPU信息

第三行显示CPU的使用情况。

这里共有8个字段,是理解CPU负载的主要依据。 在这里,我逐一说明。

美国全国广播公司

进程在用户地址空间中消耗CPU时间的百分比。 shell程式、不同语言的编译器、资料库APP应用程式、web伺服器、不同的桌面APP应用程式等等,都是在使用者位址空间中执行的程序。 如果这些程序不是空闲状态,则大多数CPU时间都是在用户状态下运行的。

sy

进程在内核地址空间中占用CPU时间的百分比。 所有进程使用的系统资源都由Linux内核处理。 如果用户状态(用户地址空间)进程(如内存分配、I/o执行和子进程创建)需要使用系统资源,它将在内核状态(内核地址空间)下运行。 实际上,确定进程是否在以下时间点运行的进程调度程序在内核状态下运行: 对于操作系统设计来说,内核状态下消耗的时间应该越少越好。 实践中存在增大sy的典型情况,这是大量的IO操作,因此在调查IO相关问题时需要关注。

ni是nice的缩写,nice的值允许您调整进程的用户状态优先级。 此处所示的ni显示调整nice值的进程所消耗的CPU时间。 如果系统中的进程未调整为nice值,则ni显示为0。

id

处理器处于空闲状态的百分比。 一般来说,us ni id应该接近100%。

wa

CPU等待磁盘I/o操作的时间。 磁盘I/o与CPU的处理速度相比非常慢。 例如,CPU必须在启动磁盘读取/写入操作之后等待磁盘读取/写入操作的结果。 CPU必须空闲,直到磁盘读/写完成。 在Linux系统中,还计算CPU在计算系统平均负载时等待IO操作的时间,因此在系统平均负载过高的情况下,wa可以确定系统的性能瓶颈是否是由过多的IO操作引起的。

日立SI

这两个值表示系统处理中断所需的时间。 中断分为硬中断和软中断,hi表示处理硬中断所需的时间,si表示处理软中断所需的时间。 硬中断是指硬盘和网卡等硬件设备向CPU发送的中断消息,CPU收到中断消息后需要进行适当的处理。 (处理器时间消耗)。 软中断是由程序发出的中断,最终也会执行相应的处理程序。 (处理器时间消耗)。

st

只有Linux作为虚拟机运行时,st才有意义。 这表示虚拟机等待CPU资源的时间。 虚拟机已分配给虚拟CPU,如果需要实际的CPU,则实际的CPU可能正在运行其他虚拟机的任务,必须等待。

小写字母t控制是否显示任务信息摘要和CPU信息。 是的。 可以控制是否显示两行信息。

存储器信息

内存信息包含两行:内存和交换空间。

top命令这一部分的输出与free命令的输出基本相同,笔者在《linux free 命令》的文章中进行了详细介绍,在此不做说明。

控制显示单位

top命令缺省情况下以k为单位显示内存大小。 这非常烦躁。 幸运的是,可以用大写的e切换内存信息区域的显示单位。 请注意,e无法控制任务区域的内存单位。 下图以GB表示内存大小。

小写字母m控制是否显示内存信息。

任务详细信息

存信息下面是一个空行(其实是与用户交互的区域),空行的下面就是任务详情区域:

默认情况下这里会显示 12 列数据,都是我们比较关心的进行相关的信息,下面我们一个一个的介绍。

PID 表示进程 ID。

USER 表示进程所有者的有效用户名称。简单说就是以哪个用户权限启动的进程。比如上图中有两个进程是用户 nick 启动的,还有一个是用户 prometheus 启动的,其它都是 root 用户启动的。

PR 表示进程执行的优先级,PR 的值是以 Linux 内核的视角看到的进程执行的优先级。

NI 从用户视角看到的进程执行优先级。注意上图中 NI 值为 -20 的两个进程,它们的 PR 值都是 0。

VIRT 表示进程使用的虚拟内存大小。

RES 表示进程使用的物理内存大小。

SHR 表示进程使用的共享内存的大小。

S 表示进程当前的状态。S 值有下面几种:

D 不可中断的睡眠状态(uninterruptible sleep)

R 正在运行的状态(running)

S 睡眠状态(sleeping)

T 跟踪或停止状态(traced or stopped)

Z 僵尸状态(zombie)

%CPU 表示进程使用 CPU 的百分比。

%MEM 表示进程使用内存的百分比。

TIME+ 表示进程累计使用的 CPU 时间。

COMMAND 表示运行进程对应的程序。

一般情况下这些信息足够了,但是如果你还想要更多的信息,你可以尝试添加更多的列。按下小写字母 f 可以进入任务信息的配置界面:

在这里你可以选择要显示的列,并且可以配置以哪一列进行排序。

显示内存大小的单位问题在任务详情区域也同样存在,默认的单位也是 KB。要改变它的单位需要使用小写字母 e 来进行切换,比如我可以把它切换为以 MB 为单位:

这样看起来就直观多了!

top 是一个非常复杂的命令,上面介绍的内容仅仅是一些皮毛而已。即便如此,你也可以用它来干不少的事情了!如果你想了解更多详细的信息,请参考 top 的使用手册。我们接下来介绍一些常见的用例。

显示多个 CPU 核心的详细信息

无论系统中有多少个 CPU 核心,默认的 CPU 信息总是输出一行,即所有核心加起来的综合数据。能不能查看各个 CPU 核心单独的数据呢?答案是,可以的。按键盘上的数字 1 就可以在不同的视图之间切换了:

以某列对进程排序

按小写字母 f 进入排序设置界面,选择某一列,按小写 's' 指定排序,然后退出。

奇怪的是默认主界面上并看不出是以哪列排序的!可以使用小写字母 x 来粗体显示当前排序的列:

可以看到 %CPU 列的字体加粗了吗?虽然不太明显,但勉强可以看到了。

还有一些预定义的命令可以直接完成以某列排序的功能,比如大写字母 M 以 %MEM 列排序;大写字母 N 以 PID 列排序;大写字母 P 以 %CPU 列排序;大写字母 T 以 TIME+ 列排序。

M %MEM

N PID

P %CPU

T TIME+

反转排序的结果是常见的需求,大写字母 R 可以将当期排序的结果反转。

显示进程执行的完整命令

默认 COMMAND 列只显示程序的名字,并不包含程序的路径。有时能够看到程序的完整路径是很方便的。你可以通过小写字母 c 来切换 COMMAND 列的显示模式:

不仅是程序的完整路径,连启动程序的参数都显示出来了!

隐藏 idle 的进程

在我们调查问题时,总希望以最快的方式找到繁忙的进程。但是 top 命令会把所有的进程列出,这就需要我们通过昏花的老眼去扫描一行行的进程信息。还好,我们可以借助小写字母 i 来控制是否显示处于 idle 状态的进程!使用这个命令后你会发现世界好清爽啊!

只显示某个用户的进程

如果你想查看以某个用户权限启动的进程,可以使用小写字母 u 。这会提示你输入用户的名称,在你输入用户名称后,按回车键:

上图中笔者输入的用户名为 nick,按回车键后就会过滤出所有以用户 nick 权限启动的进程。

top 命令的配置文件

top 命令是有配置文件的,也就是说你通过命令修改的配置都可以保存下来。保存配置的命令为大写字母 W。在你修改了 top 命令的配置后按下大写字母 W,然后退出 top 命令并再次执行 top 命令,此时你的修改仍然在起作用。

帮助文档

帮助文档永远都是我们的xdddj,小写字母 h 或者是 ? 可以打开 top 命令的帮助文档。不要太惊奇,文档有点长哟!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。