Linux 进程管理:top 命令 0 个改进

工作在 Linux 命令行下,会有想查看系统进程相关状况的时候,诸如,各进程占用 CPU 或查看哪个进程占用内存最多等需要。 好的,有一个被称为顶级(top) 的命令能满足你,而且它使用简单。本教程中,我们使用一些简单例子讲解这个命令。

讲解之前,必须一提的是本文所有的例子都在 Ubuntu 16.04 LTS 系统上运行通过。

Linux top 命令

命令 top 显示当前系统内核中进程和线程的一个信息列表,下面是其命令语法:

top [命令选项]

跟随以下类似 Q&A(问与答)方式的例子,我们更容易掌握 top 命令的运用。

问题1. top 如何使用?

简单地,不带任何命令选项键入 top 命令:

$ top

下面是我系统上的输出:

How to use top command

注意到我的截图只是实时输出的快照(屏幕输出以固定的时间间隔在变化)。

问题2. 如何看明白 top 命令的屏幕输出?

先看屏幕输出最上面第一行。它按顺序输出以下信息 -- 当前时间系统启动运行时长活动用户会话数系统平均负载(最近1分钟,5分钟,15分钟时间内平均统计值)。

第二行按顺序输出 -- 进程总数运行进程数休眠进程数停止进程数僵尸进程数

第三行包含 CPU 占用时间百分比信息。详细信息如下:

us, user    : 未调优先级(un-niced)的用户进程时间占比
sy, system  : 系统内核进程时间占比
ni, nice    : 调优先级(niced)的用户进程时间占比
id, idle    : 内核空闲时间占比
wa, IO-wait : 用于系统 输入/输出 等待时间占比
hi : 硬件中断(hardware interrupts)消费时间占比
si : 软件中断(software interrupts)消费时间占比
st : 虚拟管理子系统消耗(stolen)时间占比 

接着的两行,显示的是内存和交换内存使用情况信息。最后,是每个进程的相关信息,有数列信息,按顺序列标题含义 -- PID (进程 ID -- process ID)USER(进程所属用户)PR (进程优先级数 -- priority )NI(进程优先参数 -- nice value)VIRT (虚拟内存占用 -- virtual)RES(物理内存占用 -- physical resource)SHR (共享内存占用 -- shared memory)S(进程状态 -- status)%CPU (CPU 占比)%MEM(内存占比 -- RAM memory)TIME+ (活动时长 -- time of activity)COMMAND(启动进程的命令 -- command)

问题3. 在 top 命令界面如何终止进程?

这很容易,只键入 ‘k’ 键,top 命令将会提示请求你输入想终止的 PID(进程 ID) 。你会在进程的列表头上方一行看到这个信息,例子中显示信息为 'PID to signal/kill [default pid = 3397]' ,中文含义: '信号\/终止发送到的 PID [默认 pid = 3397] ' 。如下截图所示:

How to kill a process from within top output

如你所见,你可以输入一个进程 ID 或回车默认。top 将会终止(通过发送终端信号 SIGTERM )指定 PID 的进程。一旦信号发送,如下信息显示在屏幕上 -- 'Send pid 3007 signal [15/sigterm]' ,中文含义: '发送到 pid 3007 信号 [15/sigterm]' 。

问题4. 如何改变进程优先级?

类似 'k' 键去终止进程,可用 'r' 去改变进程优先级(改变进程优先级是通过优先级参数 -- nice -- 的值去改变 -- renice-- 操作 )。键入 'r' 键,屏幕显示如下信息:

PID to renice [default pid = 3397] #调优先级参数的 PID [默认 pid=3397]

输入一个 PID 或回车保持默认,示例中,我输入一个 PID 后,top 屏幕提示我输入优先级参数( nice) 值。

Renice PID 2665 to value #输入 PID 2665 调整的优先级参数值

输入一个数值(范围 -20~19)并回车,你会看到 PID 2665 的进程优先级参数(nice)值改变。

Q5. 如何更改 top 命令的刷新率?

默认情况下, top 每3秒刷新一次输出,但是您可以通过键入'd'进行调整。该命令将要求您输入新的延迟值:

将延迟从3.0更改为

只需输入值,然后按下 Enter 键。即可。

Q6. 如何限制 top 命令输出的用户

默认情况下, top 命令显示所有进程。但是,您可以通过键入'u'将输出限制为特定用户。

哪个用户 (空白代表全部)

只需在上面的行内输入用户名, 然后按下 Enter 键, 您将看到输出仅包含那些由您输入名称的用户所拥有的进程。

例如,我输入了'root',输出如下:

How to limit top command output to a user

Q7. 如何使 top 命令显示完整的命令以及参数?

这可以通过键入 'c' 来完成。  例子如下:

如何使 top 显示完整的命令以及参数

这样您现在可以在输出中看到完整的命令路径以及命令行参数。

Q8. 如何获得交互式 top 命令的帮助?

要获得与交互式 top 命令有关的帮助, 请键入 'h' 。在输出中,您将看到可用的命令以及它们的作用。例如,这是当我按下 ' h' 时在系统上弹出的内容。

如何获得交互式 top 命令的帮助

结论

我们在这仅仅摸到了点皮毛。top 命令提供了更多的功能。一旦您了解了我们在本文中讨论的所有内容并完成了实践, 请转到 top 的 手册页 以了解更多信息。

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!