htop-dev/htop
GitHub: htop-dev/htop
htop 是一个用 C 语言编写的跨平台交互式进程查看器,提供了比传统 top 更直观的彩色终端界面和便捷的进程管理功能。
Stars: 7983 | Forks: 577
# [](https://htop.dev)
[](https://github.com/htop-dev/htop/actions)
[](https://scan.coverity.com/projects/21665)
[](https://groups.io/g/htop)
[](https://web.libera.chat/#htop)
[](https://github.com/htop-dev/htop/releases/latest)
[](https://repology.org/project/htop/versions)
[](COPYING?raw=true)

## 简介
`htop` 是一个跨平台的交互式进程查看器。
`htop` 允许垂直和水平滚动进程列表,以查看其完整的命令行和相关信息,如内存和 CPU 消耗。
此外,还显示系统级信息,如平均负载或交换空间使用情况。
显示的信息可以通过图形设置进行配置,并且可以进行交互式排序和过滤。
与进程相关的任务(例如终止和调整优先级)可以在不输入其 PID 的情况下完成。
运行 `htop` 需要 `ncurses` 库,通常命名为 libncurses(w)。
`htop` 是用 C 语言编写的。
有关更多信息和详细信息,请访问 [htop.dev](https://htop.dev)。
## 用法
有关支持的按键命令列表,请参阅手册页(`man htop`)或帮助菜单(`htop` 内按 `h` 或 `F1`)。
### 快速开始
一些常见操作可帮助您开始使用 `htop`
- 搜索进程:按 `/`
- 过滤进程:按 `\`
- 切换树形视图:按 `t`
- 更改进程排序列:按 `.`
- 终止进程:选择进程并按 `k`
## 构建说明
### 前置条件
构建时依赖项列表:
* 标准的基于 GNU autotools 的 C 工具链
- 符合 C99 标准的编译器
- `autoconf`
- `automake`
- `autotools`
* `ncurses`
**关于 `ncurses` 的说明:**
基于功能标志的其他构建时依赖项列表:
* `pkg-config`
* `sensors`
* `hwloc`
* `libcap`(v2.21 或更高版本)
* `libnl-3` 和 `libnl-genl-3`
`pkg-config` 是可选的,但建议使用。`htop` 的 configure 脚本可能会利用 `pkg-config` 来获取库所需的编译器和链接器标志。某些操作系统发行版通过替代实现(如 `pkgconf`)提供 `pkg-config` 功能。请在您的软件包管理器中查找这两个名称。
从您的软件包管理器安装这些以及其他 C 开发所需的软件包。
**Debian/Ubuntu**
```
sudo apt install libncursesw5-dev autotools-dev autoconf automake build-essential
```
**Fedora/RHEL**
```
sudo dnf install ncurses-devel automake autoconf gcc
```
**OpenSUSE/SLES**
```
sudo zypper install ncurses-devel ncurses-devel-static automake autoconf gcc make glibc-devel glibc-devel-static
```
**Archlinux/Manjaro**
```
sudo pacman -S --needed base-devel ncurses
```
**macOS**
```
brew install ncurses automake autoconf gcc
```
### 从源代码编译:
要从源代码编译,请从 Git 仓库下载(`git clone` 或从 [GitHub releases](https://github.com/htop-dev/htop/releases/) 下载),然后运行:
```
./autogen.sh && ./configure && make
```
### 安装
要在本地系统上安装,请运行 `make install`。默认情况下,`make install` 安装到 `/usr/local`。要更改此路径,请使用 `./configure --prefix=/some/path`。
### 构建选项
`htop` 有几个构建时选项用于启用/禁用附加功能。
#### 通用选项
* `--enable-unicode`:
启用 Unicode 支持
- 依赖项:*libncursesw*
- 默认值:*yes*
* `--enable-affinity`:
启用 `sched_setaffinity(2)` 和 `sched_getaffinity(2)` 以支持亲和性;与 hwloc 冲突
- 默认值:*check*
* `--enable-hwloc`:
启用 hwloc 以支持 CPU 亲和性;禁用 affinity 支持
- 依赖项:*libhwloc*
- 默认值:*no*
* `--enable-backtrace`:
启用显示进程的回溯
- 默认值:*no*
- 可能的值:
- unwind-ptrace:使用 **libunwind-ptrace** 获取回溯
* `--enable-demangling`:
为回溯启用 demangle 支持
- 默认值:*check*
- 可能的值:
- libiberty:使用 **libiberty** (GNU) 对函数名进行 demangle
- libdemangle:使用 **libdemangle** (Solaris) 对函数名进行 demangle
* `--enable-static`:
构建静态 htop 二进制文件;不支持 hwloc 和延迟统计
- 默认值:*no*
* `--enable-debug`:
启用断言和内部健全性检查;意味着性能损失
- 默认值:*no*
#### Performance Co-Pilot
* `--enable-pcp`:
通过新的 pcp-htop 实用程序启用 Performance Co-Pilot 支持
- 依赖项:*libpcp*
- 默认值:*no*
#### Linux
* `--enable-sensors`:
启用 libsensors(3) 支持以读取温度数据
- 依赖项:*libsensors-dev*(构建时),运行时如果可用则通过 `dlopen(3)` 加载 *libsensors*
- 默认值:*check*
* `--enable-capabilities`:
启用 Linux capabilities 支持
- 依赖项:*libcap*
- 默认值:*check*
* `--with-proc`:
Linux 兼容的 proc 文件系统位置
- 默认值:*/proc*
* `--enable-openvz`:
启用 OpenVZ 支持
- 默认值:*no*
* `--enable-vserver`:
启用 VServer 支持
- 默认值:*no*
* `--enable-ancient-vserver`:
启用旧版 VServer 支持(意味着 `--enable-vserver`)
- 默认值:*no*
* `--enable-delayacct`:
启用 Linux 延迟统计支持
- 依赖项:*libnl-3-dev*(构建时)和 *libnl-genl-3-dev*(构建时),运行时如果可用且被请求,则通过 `dlopen(3)` 加载 *libnl-3* 和 *libnl-genl-3*
- 默认值:*check*
## 运行时依赖项:
`htop` 有一组固定的最小运行时依赖项,并保持尽可能最小:
* 用于终端处理的 `ncurses` 库(宽字符支持)。
### 运行时可选依赖项:
`htop` 有一组固定的可选依赖项,具体取决于使用的构建/配置选项:
#### Linux
* `libdl`,如果未构建静态二进制文件,当存在可选依赖项(即 `libsensors`、`libsystemd`)的支持时,始终是必需的。
* `libcap`,POSIX 1003.1e capabilities 的用户空间接口,当使用 `--enable-capabilities` 配置 `htop` 时始终是必需的。
* `libsensors`,读取温度和 CPU 速度,即使使用 `--enable-sensors` 配置了 `htop` 也是可选的。
* `libsystemd`,当未使用 `--enable-static` 配置 `htop` 时是可选的。如果构建静态版本且 `configure` 未找到 `libsystemd`,则完全禁用 systemd 计量表的支持。
* `libnl-3` 和 `libnl-genl-3`,如果 `htop` 配置了 `--enable-delayacct` 且延迟统计进程字段处于活动状态。
- 当内核编译时带有 `CONFIG_TASK_IO_ACCOUNTING=Y` 时,I/O 计数器可用。
`htop` 会在运行时检查实际运行时库的可用性。
#### BSD
在大多数 BSD 系统上,`kvm` 是读取内核信息所必需的。
有关必需和可选依赖项的更多信息,可以在 [configure.ac](configure.ac) 中找到。
## 支持
如果您在运行 `htop` 时遇到问题,请查阅您的操作系统 / Linux 发行版文档以获取支持和提交错误报告。
## 错误、开发反馈
我们有一个 [开发邮件列表](https://htop.dev/mailinglist.html)。欢迎订阅以获取发布公告或在 `htop` 的开发方面提问。
您也可以加入我们的 IRC 频道 [#htop on Libera.Chat](https://web.libera.chat/#htop) 并与那里的开发者交流。
如果您在 `htop` 源代码中发现了一个问题,请检查我们的 [GitHub issue tracker](https://github.com/htop-dev/htop/issues) 中是否已经报告过该问题。
如果没有,请新建一个 issue,描述您发现的问题、您所指的源代码中的潜在位置,以及可能的修复方法(如果有)。
## 历史
`htop` 由 [Hisham Muhammad](https://hisham.hm/) 于 2004 年至 2019 年期间发明、开发和维护。他的 [legacy 仓库](https://github.com/hishamhm/htop/) 已被归档以保留历史记录。
2020 年,一个 [团队](https://github.com/orgs/htop-dev/people) 友好地接管了开发,并继续协作维护 `htop`。
## 许可证
GNU General Public License,版本 2 (GPL-2.0) 或(由您选择)任何更高版本。
标签:Awesome, CPU监控, DevOps工具, ncurses, Qt, renice, Swap监控, Unix, 内存监控, 客户端加密, 开源, 性能监控, 数字足迹, 杀进程, 树形视图, 系统管理, 终端工具, 负载监控, 运维工具, 进程排序, 进程查看器, 进程过滤