linux中top命令
尝试找出您的计算机上正在运行的内容以及哪个进程正在消耗您的所有内存并使slllooowwww成为一件事情,该实用程序top
很好地完成这一任务。
top
是一个非常有用的程序,其行为类似于Windows Task Manager或MacOS的Activity Monitor。 在* nix机器上运行的top
将为您显示系统上正在运行的进程的实时运行视图。
$ top
根据您运行的top
版本,您将获得如下所示的内容:
top - 08:31:32 up 1 day, 4:09, 0 users, load average: 0.20, 0.12, 0.10
Tasks: 3 total, 1 running, 2 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.5 us, 0.3 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 4042284 total, 2523744 used, 1518540 free, 263776 buffers
KiB Swap: 1048572 total, 0 used, 1048572 free. 1804264 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 21964 3632 3124 S 0.0 0.1 0:00.23 bash
193 root 20 0 123520 29636 8640 S 0.0 0.7 0:00.58 flask
195 root 20 0 23608 2724 2400 R 0.0 0.1 0:00.21 top
您的top
版本可能与此不同,尤其是在显示的列中。
如何读取输出
您可以根据输出来判断正在运行的内容,但是尝试解释结果可能会造成一些混乱。
前几行包含一堆统计信息(详细信息),其后是带有结果列表(列表)的表。 让我们从后者开始。
名单
系统上运行的进程 。 默认情况下,它们按CPU使用率降序排列。 这意味着列表顶部的项目正在使用更多的CPU资源,并导致系统上有更多的负载。 从字面上看,它们是资源使用的“顶级”过程。 您必须承认,这是一个聪明的名字。 最右边的COMMAND
列报告进程的名称(您运行以启动它们的命令)。 在此示例中,它们是bash
(我们正在top
运行的命令解释器), flask
(用Python编写的Web微框架)和top
本身。
其他列提供有关过程的有用信息:
-
PID
: 进程ID ,用于寻址进程的唯一标识符 -
USER
:运行进程的用户 -
PR
:任务的优先级 -
NI
:更好地表示优先级 -
VIRT
:虚拟内存大小,单位为KiB(千字节)* -
RES
:KiB *中的常驻内存大小(“物理内存”和VIRT的子集) -
SHR
:KiB *中的共享内存大小(“共享内存”和VIRT的子集) -
S
:进程状态,通常I =空闲, R =运行, S =睡眠, Z =僵尸, T或t =已停止(还有其他较不常见的选项) -
%CPU
:自上一次屏幕更新以来的CPU使用率百分比 -
%MEM
:自上次屏幕更新以来RES
内存使用率的百分比 -
TIME+
:自进程开始以来使用的总CPU时间 -
COMMAND
:命令,如上所述
*确切了解什么VIRT
, RES
和SHR
值表示其实并不重要,在日常操作。 重要的是要知道, VIRT
最多的VIRT
是使用最多内存的进程。 如果你在top
,因为你正在调试计算机为什么感觉像在糖蜜池,最大过程VIRT
数是罪魁祸首。 如果您想确切地了解“共享”和“物理”内存的含义,请查看顶级手册中的“ Linux内存类型”。
而且,是的,我确实要键入ki bi字节,而不是ki lo字节。 通常称为千字节的1,024值实际上是一个千字节。 希腊千克 (“χίλιοι”)表示千 ,表示1,000的某物(例如,一千米是一千米,一千克是一千克)。 Kibi是千和字节的组合 ,表示1,024字节(或2 10 )。 但是,由于很难说出来,所以许多人说千字节时要表示1,024字节。 所有这些意味着top
试图在这里使用适当的术语,所以就顺其自然。 #themoreyouknow🌈。
屏幕更新说明:
实时屏幕更新是Linux程序可以做的客观上非常酷的事情之一 。 这意味着他们可以实时更新自己的显示,因此它们看起来很生动。 即使他们正在使用文本。 非常酷! 在我们的示例中,两次更新之间的时间很重要,因为我们的某些统计信息( %CPU
和%MEM
)基于自上一次屏幕更新以来的值。
并且因为我们在持久性应用程序中运行,所以可以按键盘命令实时更改设置或配置(而不是关闭应用程序并使用其他命令行标志再次运行该应用程序)。
键入h
调用“帮助”屏幕,该屏幕还显示默认延迟 (两次屏幕更新之间的时间)。 默认情况下,该值是(大约)三秒钟,但是您可以通过键入d
(大概是“延迟”)或s
(可能是“屏幕”或“秒”)来更改它。
细节
在进程列表上方,还有很多其他有用的信息。 其中一些细节可能看起来很奇怪且令人困惑,但是一旦您花了一些时间逐步了解每个细节,就会发现它们是非常有用的统计数据。
第一行包含一般系统信息
-
top
:我们正在运行top
! 嗨,top
! -
XX:YY:XX
:时间,每次屏幕更新时更新 -
up
(然后是X day, YY:ZZ
):系统的正常运行时间 ,或者自系统启动以来经过了多少时间 -
load average
(后三个数字):分别在最后一分钟,五分钟和十五分钟内的系统负载
第二行(“ Tasks
)显示有关正在运行的任务的信息,这很容易解释。 它显示进程总数以及运行,Hibernate,停止和僵尸进程的数量。 这实际上是上述S
( state )列的总和。
第三行( %Cpu(s)
)显示按类型分隔的CPU使用率。 数据是屏幕刷新之间的值。 值是:
-
us
:用户流程 -
sy
:系统进程 -
ni
: 不错的用户流程 -
id
:CPU的空闲时间; 闲置时间长意味着没有太多事情要做 -
wa
:等待时间,或等待I / O完成所花费的时间 -
hi
:等待硬件中断所花费的时间 -
si
:等待软件中断所花费的时间 -
st
:“虚拟机管理程序从此VM偷走的时间”
您可以通过键入t
(表示“切换”)来折叠“ Tasks
和“ %Cpu(s)
行。
第四行( KiB Mem
)和第五行( KiB Swap
)提供有关内存和交换的信息。 这些值是:
-
total
-
used
-
free
但是也:
- 内存
buffers
- 交换
cached Mem
默认情况下,它们在KiB中列出,但是按E
(表示“扩展内存扩展”)将在不同的值之间循环:吉字节,兆字节,千兆字节,兆字节,百兆字节和exbibytes。 (即千字节,兆字节,千兆字节,TB,PB和EB,但是它们的“真实名称”。)
top
用户手册显示了有关有用标志和配置的更多信息。 要在您的系统上找到手册,可以运行man top
。 有许多网站显示了手册的HTML呈现 ,但是请注意, 这些网站可能是用于top的不同版本的 。
两种最佳选择
您不必总是使用top
来了解发生了什么。 根据您的情况,其他工具可能会帮助您诊断问题,尤其是当您需要更图形化或专用的界面时。
停止
htop
与top
很像,但是它为表带来了非常有用的东西:CPU和内存使用情况的图形表示。
这就是我们在top
中检查的环境在htop
中的外观。 显示虽然简单得多,但功能仍然丰富。
我们的任务计数,负载,正常运行时间和进程列表仍然存在,但是我们获得了每个内核的CPU使用率的漂亮,彩色动画视图以及内存使用率图表。
这是不同颜色的含义(您也可以通过按h
以获得“帮助”来获取此信息)。
CPU任务优先级或类型:
- 蓝色:低优先级
- 绿色:正常优先
- 红色:内核任务
- 蓝色:虚拟任务
- 柱尾的值是已用CPU的百分比
记忆:
- 绿色:已用内存
- 蓝色:缓冲的内存
- 黄色:缓存的内存
- 栏末尾的值显示已用内存和总内存
如果颜色对您没有帮助,则可以运行htop -C
禁用它们; 相反, htop
将使用不同的符号来分隔CPU和内存类型。
在底部,有一个有用的活动功能键显示,可用于执行诸如过滤结果或更改排序顺序之类的操作。 尝试一些命令以查看它们的作用。 试用F9
时要小心。 这将显示将终止(即停止)进程的信号列表。 我建议在生产环境之外探索这些选项。
htop
的作者Hisham Muhammad(是的,在Hisham之后被称为htop
)在2月的FOSDEM 2018上发表了有关htop
的闪电演讲 。 他解释了htop
如何不仅具有整洁的图形,而且还可以显示关于较旧的监视实用程序(如top
)所没有的流程的更多现代统计信息。
您可以在手册页或htop网站上了解有关htop
更多信息。 (警告:该网站包含htop
的动画背景。)
码头工人统计
如果您正在使用Docker,则可以运行docker stats
来生成容器正在执行的内容丰富的表示。
这比top
更有用,因为您不是按进程进行分隔,而是按容器进行分隔。 当容器运行缓慢时,这尤其有用,因为查看哪个容器使用最多的资源比运行top
资源并尝试将进程映射到容器要快。
上面对top
和htop
的首字母缩写词和描述符的解释应该使理解docker stats
的缩写词和描述符更加容易。 但是, docker stats文档提供了每列的有用描述。
翻译自: https://opensource.com/article/18/8/top-tips-speed-up-computer
linux中top命令