命令行手册

Man » htop 在线手册 - htop 手册页的详细在线文档

🌍
htop, pcp-htop - 交互式进程查看器

概要

htop [-dCFhpustvH]
pcp-htop [-dCFhpustvH] [--host/-h host]

描述

htop 是一个跨平台的基于 ncurses 的进程查看器。

它类似于 top,但允许您垂直和水平滚动,并使用指向设备(鼠标)进行交互。您可以观察系统上运行的所有进程,以及它们的命令行参数,还可以以树状格式查看它们,选择多个进程并一次性对它们执行操作。

与进程相关的任务(终止、调整优先级)无需输入其 PID 即可完成。

pcp-htop 是使用性能协同工具(PCP)指标 API 构建的 htop 版本(请参阅 PCPIntro(1)、PMAPI(3)),允许扩展 htop 以显示来自任意指标的值。请参阅下面的“配置文件”部分,了解更多详细信息。

命令行选项

长选项的强制参数对于短选项也是强制的。

-d --delay=DELAY

更新之间的延迟时间,以十分之一秒为单位。如果延迟值小于 1,则将其增加到 1,即 1/10 秒。如果延迟值大于 100,则将其减少到 100,即 10 秒。

-C --no-color --no-colour

以单色模式启动 htop

-F --filter=FILTER

按与命令匹配的术语过滤进程。术语匹配不区分大小写,并且作为固定字符串(不是正则表达式)。您可以使用“|”分隔多个术语。

-h --help

显示帮助消息并退出

-p --pid=PID,PID...

仅显示给定的 PID

-s --sort-key COLUMN

按此列排序(使用 --sort-key help 获取列列表)。这将强制使用列表视图,除非同时指定了 -t。在树视图中排序时,将应用于每个进程的直接子进程。

-u --user[=USERNAME|UID]

仅显示给定用户或自身(如果未指定)的进程

-U --no-unicode

不使用 Unicode 字符,而是使用 ASCII 字符来显示图形计量器

-M --no-mouse

禁用鼠标控制支持

--readonly

禁用所有系统和进程更改功能

-V --version

输出版本信息并退出

-t --tree

以树状视图显示进程。这可用于在请求使用 -s 排序时强制使用树状视图。

-H --highlight-changes=DELAY

突出显示新的和旧的进程

--drop-capabilities[=off|basic|strict]

仅限 Linux;此选项需要在编译时启用,并且在运行时需要 libcap 支持。 删除不需要的 Linux 功能。在严格模式下,由于保留的功能较少,因此某些功能(如终止、更改进程优先级和读取进程延迟记账信息)将无法工作。


交互命令

在 htop 中,支持以下命令:

Tab, Shift-Tab

选择要显示的下一个/上一个屏幕选项卡。 您可以在“设置”屏幕 (F2) 中启用显示屏幕选项卡名称。

Up, Alt-k

选择(突出显示)进程列表中的上一个进程。 如有必要,滚动列表。

Down, Alt-j

选择(突出显示)进程列表中的下一个进程。 如有必要,滚动列表。

Left, Alt-h

将进程列表向左滚动。

Right, Alt-l

将进程列表向右滚动。

PgUp, PgDn

将进程列表向上或向下滚动一个窗口。

Home 滚动到进程列表的顶部并选择第一个进程。

End 滚动到进程列表的底部并选择最后一个进程。

Ctrl-A, ^

滚动到进程条目的开头(即行首)。

Ctrl-E, $

滚动到进程条目的末尾(即行尾)。

Space

标记或取消标记一个进程。 然后,诸如“kill”之类的可以对多个进程进行操作的命令将应用于标记的进程列表,而不是当前突出显示的进程。

c    标记当前进程及其子进程。 然后,诸如“kill”之类的可以对多个进程进行操作的命令将应用于标记的进程列表,而不是当前突出显示的进程。

U    取消标记所有进程(删除使用 Space 或 c 键添加的所有标记)。

s    跟踪进程系统调用:如果安装了 strace(1),则按此键会将它附加到当前选定的进程,并呈现进程发出的系统调用的实时更新。

l 显示进程的打开文件:如果安装了 lsof(1),则按此键将显示进程打开的文件描述符列表。

w    在一个单独的屏幕上显示所选进程的命令行,并根据需要将其分成多行。

x    在一个单独的屏幕上显示所选进程的活动文件锁。

F1, h, ?

转到帮助屏幕

F2, S

转到设置屏幕,您可以在其中配置显示在屏幕顶部的度量标准,设置各种显示选项,选择要显示哪些列以及以什么顺序显示。

F3, /

增量搜索所有已显示进程的命令行。 您键入时,当前选择的(突出显示的)命令行将更新。 在搜索模式下,按 F3 将循环显示匹配的条目。 按 Shift-F3 将向后循环。

或者,也可以通过直接键入要搜索的命令来启动搜索,尽管对于第一个字符,正常的按键绑定优先。

F4, \

增量进程过滤:键入进程命令行的一部分,并且仅显示名称匹配的进程。 要取消过滤,请再次进入“过滤器”选项并按 Esc。 匹配是不区分大小写的。 可以用“|”分隔多个术语。


F5, t

树状视图:按父子关系组织进程,并以树状形式显示它们之间的关系。切换此键将在树状视图和您之前选择的排序视图之间进行切换。选择排序视图将退出树状视图。

F6, <, >

选择用于排序的字段,也可以通过 < 和 > 访问。当前排序字段通过标题中的高亮显示来指示。

F7, ]

增加所选进程的优先级(从“nice”值中减去)。只有超级用户才能执行此操作。

F8, [

降低所选进程的优先级(添加到“nice”值中)。

Shift-F7, }

增加所选进程的自动分组优先级(从自动分组的“nice”值中减去)。只有超级用户才能执行此操作。

Shift-F8, {

降低所选进程的自动分组优先级(添加到自动分组的“nice”值中)。

F9, k

“杀死”进程:将菜单中选择的信号发送到一个或多个进程。如果已标记进程,则将信号发送到所有标记的进程。如果没有标记进程,则将信号发送到当前选择的进程。

F10, q

退出

I

反转排序顺序:如果排序顺序为升序,则切换为降序,反之亦然。

+, -, *

在树状视图模式下,展开或折叠子树。当子树折叠时,会在进程名称的左侧显示一个“+”符号。按下“*”将展开或折叠所有没有父进程的 PID 的子项,通常是 PID 1(init)和 PID 2(Linux 上的 kthreadd,如果显示内核线程)。

a(在多处理器机器上)

设置 CPU 亲和性:标记进程允许使用的 CPU。

u

仅显示由指定用户拥有的进程。

N

按 PID 排序。

M

按内存使用量排序(与 top 命令兼容的键)。

P

按处理器使用量排序(与 top 命令兼容的键)。

T

按时间排序(与 top 命令兼容的键)。

F

“跟踪”进程:如果排序顺序导致当前选择的进程在列表中移动,则使选择栏跟踪它。这对于监视进程很有用:这样,您可以始终在屏幕上查看该进程。当使用移动键时,“跟踪”效果将失效。

K

隐藏内核线程:防止内核线程显示在进程列表中。(这是一个切换键。)

H

隐藏用户线程:在系统以与普通进程不同的方式表示它们时(例如,基于最新的 NPTL 系统的系统),这可以隐藏用户空间进程的线程,从而不在进程列表中显示。(这是一个切换键。)

O

隐藏容器化进程:防止在进程列表中显示在容器中运行的进程。(这是一个切换键。)

p

显示正在运行的程序的完整路径(如果适用)。(这是一个切换键。)

Z

暂停/恢复进程更新。

m

合并 exe、comm 和 cmdline(如果适用)。(这是一个切换键。)

Ctrl-L

刷新:重新绘制屏幕并重新计算值。

数字 PID 搜索:输入进程 ID,选择高亮将移动到该进程。


以下列可以显示每个进程的数据。如果所有行中的值为“-”,则表示该列在您的系统上不受支持,或者当前未在 htop 中实现。下面是“可用列”部分中显示的名称。如果在 htop 的主屏幕上显示不同的名称,则下面会以括号显示。

命令 进程的完整命令行(即程序名称和参数)。

如果启用了“将 exe、comm 和 cmdline 合并到命令”选项(通过“m”键切换),则会将可执行文件路径(/proc/[pid]/exe)和命令名称(/proc/[pid]/comm)与命令行合并,如果可用。

如果配置了,程序的基本名称将被突出显示。还可以配置对过时可执行文件的额外突出显示(参见下面的 EXE 列)。

“命令”列应是每个屏幕中的最后一列,因为该列可能会很长,并且可以动态扩展其长度。

COMM 进程的命令名称,从 /proc/[pid]/comm 获取,如果可以读取。

需要 Linux 内核 2.6.33 或更高版本。

EXE 进程的可执行文件的缩写基本名称,从 /proc/[pid]/exe 获取,如果可以读取。htop 仅在具有 CAP_SYS_PTRACE 权限或 root 权限时,才能读取 Linux 中的所有进程的此文件。

如果用于运行进程的可执行文件在进程启动后已被替换或删除,则基本名称将以红色标记。通过处理 /proc/[pid]/exe 的内容来获取此信息。

此外,如果自上次加载以来,有任何库被报告为已替换或删除,则基本名称将以黄色标记。通过处理 /proc/[pid]/maps 的内容来获取此信息。

在确定颜色时,主可执行文件的替换始终优先于任何其他库的替换。如果仅内存映射指示主可执行文件的替换,则显示为任何其他库已被替换或删除。

可以在设置屏幕的“显示选项”部分配置此额外的颜色标记。

显示 EXE 需要 CAP_SYS_PTRACE 和 PTRACE_MODE_READ_FSCRED。

PID 进程 ID。

STATE (S)

进程的状态: S 表示休眠 I 表示空闲(在区分平台上的比休眠更长的非活动状态) R 表示正在运行 D 表示磁盘休眠(不可中断) Z 表示僵尸(等待父进程读取其退出状态) T 表示跟踪或暂停(例如,通过 SIGTSTP) W 表示页面调度

PPID 父进程 ID。

PGRP 进程的组 ID。

SESSION (SID)

进程的会话 ID。

TTY 进程的控制终端。

TPGID

控制终端的前台进程组的进程 ID。

MINFLT

在主内存中发生的页面错误数。

CMINFLT

进程等待的子进程的轻微错误的数量(参见上面的 MINFLT)。


MAJFLT
发生的主内存页错误数。

CMAJFLT
进程等待的子进程发生的主要错误数(参见上面的 MAJFLT)。

UTIME (UTIME+)
用户 CPU 时间,即进程在用户模式下(即除系统调用之外的所有内容)在 CPU 上执行的时间,以时钟周期为单位。

STIME (STIME+)
系统 CPU 时间,即内核代表进程执行系统调用所花费的时间,以时钟周期为单位。

CUTIME (CUTIME+)
子进程的用户 CPU 时间,即进程的等待子进程在用户模式下执行的时间(参见上面的 UTIME)。

CSTIME (CSTIME+)
子进程的系统 CPU 时间,即内核代表所有进程的等待子进程执行系统调用所花费的时间(参见上面的 STIME)。

PRIORITY (PRI)
内核为进程分配的内部优先级,通常只是其 nice 值加二十。对于实时进程则不同。

NICE (NI)
进程的 nice 值,范围为 19(低优先级)到 -20(高优先级)。较高的值表示该进程正在“谦让”,让其他进程具有更高的相对优先级。通常的操作系统权限限制适用于调整优先级。

STARTTIME (START)
进程启动的时间。

PROCESSOR (CPU)
进程上次在其上执行的 CPU 的 ID。

M_VIRT (VIRT)
进程的虚拟内存大小。

M_RESIDENT (RES)
进程的常驻集大小(文本 + 数据 + 堆栈),即进程使用的物理内存大小。

M_SHARE (SHR)
进程的共享页大小。

M_TRS (CODE)
进程的文本常驻集大小,即进程的可执行指令的大小。

M_DRS (DATA)
进程的数据常驻集大小(数据 + 堆栈),即除进程的可执行指令之外的所有内容。

M_LRS (LIB)
进程的库大小。

M_SWAP (SWAP)
进程的交换页大小。

M_PSS (PSS)
比例集大小,与 M_RESIDENT 相同,但每个页面除以共享该页面的进程数。

M_M_PSSWP (PSSWP)
此映射的比例交换份额,与 M_SWAP 不同,它不考虑底层共享内存对象的已交换页面。

ST_UID (UID)
进程所有者的用户 ID。

PERCENT_CPU (CPU%)
进程当前使用的 CPU 时间百分比。这是在 Linux 中表示 CPU 使用率的默认方法。每个进程最多可以使用 100%,这意味着它正在使用的核心的全部容量。这有时被称为“Irix 模式”,例如在 [top]({filename}../../top)(1) 中。

PERCENT_NORM_CPU (NCPU%)
进程当前使用的 CPU 时间百分比,按 CPU 数量进行归一化。这有时被称为“Solaris 模式”,例如在 [top]({filename}../../top)(1) 中。

PERCENT_MEM (MEM%)
进程当前使用的内存百分比(基于进程的常驻内存大小,参见上面的 M_RESIDENT)。

USER 进程所有者的用户名,或者如果无法确定用户名,则使用用户 ID。

在 Linux 上,如果进程具有提升的权限(即,如果它是由具有文件功能的二进制文件或通过环境集保留的 Linux 功能启动的,或者在从 root 用户切换后),则会突出显示用户名。

TIME (TIME+)
进程花费在用户时间和系统时间上的时钟周期数(参见上面的 UTIME、STIME)。

NLWP 进程中的轻量级进程(线程)数。

TGID 线程组 ID。

CTID OpenVZ 容器 ID,也称为虚拟环境 ID。

VPID OpenVZ 进程 ID。

VXID VServer 进程 ID。

RCHAR (RD_CHAR)
进程读取的字节数。

WCHAR (WR_CHAR)
进程写入的字节数。

SYSCR (RD_SYSC)
进程的 read(2) 系统调用次数。

SYSCW (WR_SYSC)
进程的 write(2) 系统调用次数。

RBYTES (IO_RBYTES)
进程的 read(2) I/O 字节数。

WBYTES (IO_WBYTES)
进程的 write(2) I/O 字节数。

CNCLWB (IO_CANCEL)
已取消的 write(2) I/O 字节数。

IO_READ_RATE (DISK READ)
进程的 read(2) I/O 速率,以字节/秒为单位。

IO_WRITE_RATE (DISK WRITE)
进程的 write(2) I/O 速率,以字节/秒为单位。

IO_RATE (DISK R/W)
I/O 速率,IO_READ_RATE + IO_WRITE_RATE(参见上文)。

CGROUP
进程所在的 cgroup。 对于缩短的视图,请参见下面的 CCGROUP 列。

CCGROUP
进程所在 cgroup 名的缩短视图。 这会执行基于模式的替换以缩短显示的字符串,从而压缩信息。
/*.slice 缩短为 /[ *] (以下例外)
/system.slice 缩短为 /[S]
/user.slice 缩短为 /[U]
/user-*.slice 缩短为 /[U: *] (在删除之前,直接在 /[U] 前面)
/machine.slice 缩短为 /[M]
/machine-*.scope 缩短为 /[SNC: *] (SNC:systemd nspawn 容器),监控程序为大写
/lxc.monitor.* 缩短为 /[LXC: *]
/lxc.payload.* 缩短为 /[lxc: *]
/*.scope 缩短为 /!*
/*.service 缩短为 /* (删除后缀)

cgroup 名称中遇到的转义序列(例如,来自 systemd)不会被解码。

OOM OOM killer 分数。

CTXT 自愿和非自愿上下文切换的增量总和。

IO_PRIORITY (IO)
I/O 调度类,后跟优先级(如果该类支持优先级):
R 表示实时
B 表示最佳努力
id 表示空闲

PERCENT_CPU_DELAY (CPUD%)
花费在等待 CPU 上的时间百分比(处于可运行状态)。 需要 CAP_NET_ADMIN。

PERCENT_IO_DELAY (IOD%)
花费在等待同步块 I/O 完成的时间百分比。 需要 CAP_NET_ADMIN。

PERCENT_SWAP_DELAY (SWAPD%)
花费在页面交换中的时间百分比。 需要 CAP_NET_ADMIN。

AGRP 进程的自动组标识符。 需要启用 Linux CFS。

ANI 进程自动分组的“autogroup nice”值。需要启用 Linux CFS。

所有其他标志 当前不支持(始终显示“-”)。

外部库

虽然 htop 依赖于构建时使用的几乎所有库,但有两个值得注意的例外。 这两个例外都与显示在 htop 标头中的米表中显示的数据有关,并且有意创建为可选的运行时依赖项。 这些例外情况如下:

libsystemd

libsystemd 的绑定用于 SystemD 米表中,以确定活动服务的数量和整体系统状态。 在运行时查找用于确定这些信息的函数,允许构建支持这些米表,而无需强制包管理器在不使用 systemd 的系统上安装这些库。

摘要:没有构建时依赖项,通过动态加载的 libsystemd 的可选运行时依赖项,并使用 [systemctl]({filename}../../systemctl)(1) 作为后备。

libsensors

libsensors 的绑定用于 CPU 使用率米表中的 CPU 温度读数,如果通过设置屏幕启用了温度显示。 为了使 htop 正确显示这些温度,需要对 libsensors 进行适当的配置,通过其通常的配置文件,并假设所有 CPU 核心都与 coretemp 驱动程序中的温度传感器对应,并且核心 0 对应于标记为“Core 0”的传感器。 包温度可以显示为“Package id 0”。 如果缺少,则从可用的每个核心读数中推断出最大值。

摘要:对 libsensors(3) C 标头文件具有构建时依赖项,通过动态加载的 libsensors(3) 具有可选的运行时依赖项。

配置文件

默认情况下,htop 从符合 XDG 标准的路径 \~/.config/htop/htoprc 读取其配置。 htop 在干净退出时,会通过其程序内的设置配置覆盖配置文件,因此不应手动编辑它。 如果不存在用户配置,htop 会尝试从 /etc/htoprc 读取系统范围的配置,并且作为最后的手段,回退到其硬编码的默认设置。

您可以使用 $HTOPRC 环境变量来覆盖配置文件的位置(因此,您可以为共享同一主目录的不同机器提供多个配置)。

pcp-htop 实用程序以类似的方式使用 htoprc。 但是,pcp-htop 从 Performance Co-Pilot 工具通常使用的路径 \~/.pcp/htop/htoprc 读取其配置,以便在同时安装和使用 htop 和 pcp-htop 时提供单独的配置。
pcp-htop 支持位于同一目录下的其他配置文件,从而允许通过设置屏幕(F2)添加新的米表、列和屏幕选项卡。 这将显示每个米表、列或屏幕配置文件的其他可用米表、可用列和屏幕选项卡。

这些 pcp-htop 配置文件在启动时读取一次。这些文件的格式在 pcp-htop(5) 手册页中详细描述。

此功能使 pcp-htop 可以显示数千个 Performance Co-Pilot 指标,并能够显示在各个站点添加的自定义指标。如果配置了 pmdaopenmetrics(1) 组件,则也可以通过 pcp-htop 显示使用 OpenMetrics 格式(https://openmetrics.io)进行仪器化的应用程序和服务。

htop 和 pcp-htop 的配置仅在正常退出时保存。发送任何信号都会导致所有配置更改丢失。

内存大小

htop 中的内存大小以人类可读的形式显示。大小以 1024 的幂显示,使用二进制 IEC 单位。如果未显示后缀,则单位默认为 K,即 KiB(千字节,1 KiB = 1024 字节)。

做出使用此约定是为了节省屏幕空间,并使 htop 中的内存大小表示保持一致,因为分配的粒度为完整的内存页(对于大多数平台为 4 KiB)。

参阅

proc(5),top(1),free(1),ps(1),uptime(1) 和 limits.conf(5)。

PCP 相关

pmdaopenmetrics(1),PCPIntro(1),PMAPI(3) 和 pcp-htop(5)。

作者

htop 最初由 Hisham Muhammad 开发。现在由社区维护,网址为 <_>。

pcp-htop 是 <_> 和 <_> 社区之间的协作项目,是 Performance Co-Pilot 工具套件的一部分。

版权

版权所有 © 2004-2019 Hisham Muhammad。 版权所有 © 2020-2025 htop 开发团队。

许可协议:GNU 通用公共许可证版本 2 或更高版本。

这是一份自由软件:您可以自由地修改和重新分发它。在法律允许的范围内,不提供任何保证。