htop 命令详解与参数实测(Ubuntu 22.04)
在 Ubuntu 22.04(htop 3.0.5)上逐参数实测 htop:默认首屏逐区解读、-d/-u/-p/-s/-t/-U/-F/-C/-H/-M 全参数真实抓屏、--sort-key=help 全列清单、非法排序列与无终端等报错边界、F1-F10 交互键位速查,全部命令与回显真实可复现。
htop 命令详解与参数实测(Ubuntu 22.04)
目标:全面掌握 htop 的每一个命令行参数——无参数首屏逐区解读、
-d刷新间隔、-u用户过滤、-pPID 白名单、-s排序列(含--sort-key=help全列清单与非法列负例)、-t树视图、-UASCII 字符、-F过滤、-C单色、-H高亮变化、-M禁鼠标,以及非法参数、无终端等报错边界与 F1-F10 交互键位,全部命令与回显已在 Ubuntu 22.04(htop 3.0.5)实测抓屏通过。
一、环境信息
本篇所有命令均在以下环境中逐条实测,回显逐字照抄:
- 操作系统:Ubuntu 22.04.5 LTS(代号 jammy)
- 内核:6.8.0-138-generic(x86_64)
- htop 版本:3.0.5(Ubuntu 22.04 官方仓库包
3.0.5-7build2) - CPU / 内存:12 逻辑核 / 31.3 GB / Swap 2 GB(以 htop 仪表区实显示为准)
- 实测账号:root;另建普通账号 demo 用于用户过滤演示
版本与环境实测回显:
$ grep PRETTY_NAME /etc/os-release
PRETTY_NAME="Ubuntu 22.04.5 LTS"
$ uname -r; uname -m
6.8.0-138-generic
x86_64
$ htop --version
htop 3.0.5
$ dpkg -l htop
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-=============-============-=================================
ii htop 3.0.5-7build2 amd64 interactive processes viewer
$ apt-cache policy htop
htop:
Installed: 3.0.5-7build2
Candidate: 3.0.5-7build2
Version table:
*** 3.0.5-7build2 500
500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
100 /var/lib/dpkg/status
$ which htop; ls -l /usr/bin/htop
/usr/bin/htop
-rwxr-xr-x 1 root root 283840 Mar 23 2022 /usr/bin/htop
二、命令概览
2.1 htop 与 top 的定位差异
htop 是 top 的交互式增强替代:默认彩色界面、方向键直接滚动进程列表、不用输入 PID 即可 F9 杀进程 / F7/F8 调整 nice、树视图一键切换、鼠标可点。代价是它是一个纯交互式 TUI 程序——没有 top 的 -b 批处理模式,管道下直接报错(见第五章)。因此 htop 的命令行参数几乎全部是"启动时的视图预设"。
2.2 语法与参数总表
htop --help 全文实测回显:
$ htop --help
htop 3.0.5
(C) 2004-2019 Hisham Muhammad. (C) 2020 htop dev team.
Released under the GNU GPLv2.
-C --no-color Use a monochrome color scheme
-d --delay=DELAY Set the delay between updates, in tenths of seconds
-F --filter=FILTER Show only the commands matching the given filter
-h --help Print this help screen
-H --highlight-changes[=DELAY] Highlight new and old processes
-M --no-mouse Disable the mouse
-p --pid=PID[,PID,PID...] Show only the given PIDs
-s --sort-key=COLUMN Sort by COLUMN in list view (try --sort-key=help for a list)
-t --tree Show the tree view (can be combined with -s)
-u --user[=USERNAME] Show only processes for a given user (or $USER)
-U --no-unicode Do not use unicode but plain ASCII
-V --version Print version info
Long options may be passed with a single dash.
Press F1 inside htop for online help.
See 'man htop' for more information.
注意末行提示:长选项允许单横线,即
-tree等价--tree、-sort-key=PID等价--sort-key=PID,这是 htop 的特色语法。
参数总表(均在本篇第四章逐个实测):
| 参数 | 含义 | 实测节 |
|---|---|---|
| -V / --version | 版本号 | 4.12 |
| -h / --help | 帮助 | 2.2 |
| (无参数) | 默认全彩首屏 | 4.1 |
| -d tenths | 刷新间隔,单位 0.1 秒(-d 5 即 0.5 秒) | 4.2 |
| -u[=USER] | 按用户过滤,缺省为 $USER | 4.3 |
| -p PID[,PID…] | PID 白名单 | 4.4 |
| -s COLUMN | 排序列,配合 --sort-key=help 查全列 | 4.5 |
| -t | 树视图,可与 -s 组合 | 4.6 |
| -U | 禁用 Unicode,树线退化为 ASCII | 4.7 |
| -F FILTER | 按命令名子串过滤 | 4.8 |
| -C | 单色方案 | 4.9 |
| -H[=DELAY] | 高亮新旧进程 | 4.10 |
| -M | 禁用鼠标 | 4.11 |
三、准备演示进程
为了让过滤/树视图/PID 白名单有可辨识的效果,先布置一组结构清晰的演示进程:root 下一组 bash 父子双 sleep、一个吃满单核的 python 空转进程、僵尸进程两条,demo 用户下一组 su 派生的双 sleep:
$ ps -eo pid,user,args --sort=pid | head -20
PID USER COMMAND
1 root sleep infinity
1970 root [pkill] <defunct>
1985 root sleep 600
2216 root [pkill] <defunct>
2231 root bash -c sleep 3600; sleep 3600
2237 root sleep 3600
2238 root sleep 3600
2244 root python3 -c def burn(): x = 0 while True: x = (x * 1103515245 + 12345) % 2**31 burn()
2250 root su demo -c sleep 3600 & sleep 3600 & wait
2256 demo bash -c sleep 3600 & sleep 3600 & wait
2257 demo sleep 3600
2258 demo sleep 3600
用 top 交叉确认 python 空转进程吃满单核(htop 界面里 CPU 仪表应有对应跳动):
$ top -bn1 | head -8 | tail -4
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2244 root 20 0 17700 8804 5588 R 100.0 0.0 0:01.29 python3
1 root 20 0 2792 1532 1440 S 0.0 0.0 0:00.01 sleep
1970 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 pkill
以下所有 htop 界面均为在 110 列 × 34 行终端中真实抓屏后还原的文本(省略处均以 … 标注),排序位置可能因实时刷新略有跳动。
四、逐参数实测
4.1 无参数启动:默认首屏逐区解读
$ htop
实测抓屏(启动瞬间):
0[|||||||||| 47.7%] 3[||||||||||| 50.0%] 6[||||||||||| 54.3%] 9[|||||||||||| 57.8%]
1[|||||||||||| 56.2%] 4[||||||||||| 55.6%] 7[|||||||||| 48.9%] 10[|||||||||| 46.7%]
2[||||||||||| 51.1%] 5[||||||||||||||78.7%] 8[||||||||||| 52.2%] 11[||||||||||| 52.1%]
Mem[||||||||||||||||||||||||||||||||||14.0G/31.3G] Tasks: 14, 0 thr; 1 running
Swp[||||||||||||||||||||||||||||||||||2.00G/2.00G] Load average: 3.65 3.41 2.47
Uptime: 02:50:36
PID USER PRI NI VIRT RES SHR S CPU%▽MEM% TIME+ Command
1 root 20 0 2792 1532 1440 S 0.0 0.0 0:00.01 sleep infinity
1970 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 pkill
2216 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 pkill
2231 root 20 0 4364 3264 3020 S 0.0 0.0 0:00.00 bash -c sleep 3600; sleep 3600
2237 root 20 0 2792 1664 1572 S 0.0 0.0 0:00.00 sleep 3600
2238 root 20 0 2792 1652 1560 S 0.0 0.0 0:00.01 sleep 3600
2250 root 20 0 7052 4296 3732 S 0.0 0.0 0:00.01 su demo -c sleep 3600 & sleep 3600 & wait
2256 demo 20 0 4364 3128 2892 S 0.0 0.0 0:00.00 bash -c sleep 3600 & sleep 3600 & wait
2257 demo 20 0 2792 1548 1456 S 0.0 0.0 0:00.00 sleep 3600
2258 demo 20 0 2792 1624 1532 S 0.0 0.0 0:00.00 sleep 3600
2282 root 20 0 8544 4244 3396 S 0.0 0.0 0:00.14 htop
2288 root 20 0 8544 4144 3304 S 0.0 0.0 0:00.14 htop -d 5
2303 root 20 0 6200 1928 1820 S 0.0 0.0 0:00.01 timeout 4.6 htop
2309 root 20 0 8544 4264 3420 R 0.0 0.0 0:00.00 htop
…(下方为空行)…
F1Help F2Setup F3SearchF4FilterF5Tree F6SortByF7Nice -F8Nice +F9Kill F10Quit
逐区解读:
- CPU 仪表区(前 3 行):12 逻辑核逐核一条,核号 + 条形图 + 百分比。htop 3.0.5 默认每核一条;条内颜色分段表示用户/内核/低优先级占比。
- Mem / Swp 行:内存与交换分区用量条,右侧同列显示
Tasks: 14, 0 thr; 1 running(任务总数 14、0 线程展开、1 个运行态)。 - Load average / Uptime:1/5/15 分钟负载与开机时长。
- 进程列表表头:
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command。注意默认排序是 CPU% 降序,表头CPU%▽的▽即降序标记,MEM% 是次级排序键——这与 top 默认按 %CPU 排一致,但 htop 的次键是 MEM%。 - 僵尸进程:两条
[pkill] <defunct>以Z状态如实显示,Command 列带方括号。 - 底栏键位:
F1Help F2Setup F3Search F4Filter F5Tree F6SortBy F7Nice- F8Nice+ F9Kill F10Quit,键位与功能一字对齐,是 htop 最核心的操作入口(速查见第六章)。
4.2 -d / --delay:刷新间隔(单位 0.1 秒)
$ htop -d 5
实测抓屏(与 4.1 同屏布局,仅列出可观察差异):
0[|||||||||| 44.9%] 3[||||||||| 45.8%] 6[||||||||| 45.8%] 9[|||||||||| 43.5%]
1[|||||||||||| 57.4%] 4[||||||||| 42.6%] 7[|||||||||| 47.9%] 10[||||||||||| 48.9%]
2[||||||||| 42.2%] 5[|||||||||| 47.9%] 8[||||||||| 43.5%] 11[||||||||||| 51.1%]
Mem[||||||||||||||||||||||||||||||||||14.0G/31.3G] Tasks: 12, 0 thr; 1 running
Swp[||||||||||||||||||||||||||||||||||2.00G/2.00G] Load average: 4.72 3.63 2.55
Uptime: 02:50:40
PID USER PRI NI VIRT RES SHR S CPU%▽MEM% TIME+ Command
1 root 20 0 2792 1532 1440 S 0.0 0.0 0:00.01 sleep infinity
…(中间为演示进程,同 4.1)…
2316 root 20 0 6200 1980 1872 S 0.0 0.0 0:00.00 timeout 3.6 htop -d 5
2322 root 20 0 8544 4136 3296 R 0.0 0.0 0:00.00 htop -d 5
要点:-d 5 表示 5 × 0.1 秒 = 0.5 秒刷新一次,肉眼可见界面跳动更频繁。帮助原文 in tenths of seconds——与 top 的 -d 秒 单位不同,迁移时最容易踩的单位坑。
4.3 -u / --user:按用户过滤
三种形态实测。
其一,指定用户 -u demo,列表只剩 demo 的 3 条进程:
$ htop -u demo
0[||| 11.1%] 3[|| 8.0%] 6[|| 4.1%] 9[|| 4.1%]
1[|| 6.0%] 4[|||||| 23.1%] 7[| 4.1%] 10[ 0.0%]
2[|| 4.0%] 5[ 0.0%] 8[| 2.0%] 11[||| 10.2%]
Mem[||||||||||||||||||||||||||||||||||14.3G/31.3G] Tasks: 12, 0 thr; 1 running
Swp[||||||||||||||||||||||||||||||||||2.00G/2.00G] Load average: 1.83 3.05 2.45
Uptime: 02:52:15
PID USER PRI NI VIRT RES SHR S CPU%▽MEM% TIME+ Command
2256 demo 20 0 4364 3128 2892 S 0.0 0.0 0:00.00 bash -c sleep 3600 & sleep 3600 & wait
2257 demo 20 0 2792 1548 1456 S 0.0 0.0 0:00.00 sleep 3600
2258 demo 20 0 2792 1624 1532 S 0.0 0.0 0:00.00 sleep 3600
注意仪表区的 Tasks: 12 仍是全系统任务数——-u 只过滤进程列表,不影响上方统计,这是与 top -u 一致的口径。
其二,-u 不带值:过滤当前用户(root 启动即 root 的进程):
$ htop -u
PID USER PRI NI VIRT RES SHR S CPU%▽MEM% TIME+ Command
1 root 20 0 2792 1532 1440 S 0.0 0.0 0:00.01 sleep infinity
1970 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 pkill
2216 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 pkill
2231 root 20 0 4364 3264 3020 S 0.0 0.0 0:00.00 bash -c sleep 3600; sleep 3600
2237 root 20 0 2792 1664 1572 S 0.0 0.0 0:00.00 sleep 3600
2238 root 20 0 2792 1652 1560 S 0.0 0.0 0:00.01 sleep 3600
2250 root 20 0 7052 4296 3732 S 0.0 0.0 0:00.01 su demo -c sleep 3600 & sleep 3600 & wait
2459 root 20 0 6200 2080 1968 S 0.0 0.0 0:00.01 timeout 3.6 htop -u
2465 root 20 0 8544 4228 3396 R 0.0 0.0 0:00.00 htop -u
其三,过滤一个没有任何进程的用户 -u nobody,进程区整体为空(Tasks 计数不变):
$ htop -u nobody
PID USER PRI NI VIRT RES SHR S CPU%▽MEM% TIME+ Command
4.4 -p / --pid:PID 白名单
单 PID 与逗号分隔多 PID 两种形态。单 PID -p 1:
$ htop -p 1
PID USER PRI NI VIRT RES SHR S CPU%▽MEM% TIME+ Command
1 root 20 0 2792 1532 1440 S 0.0 0.0 0:00.01 sleep infinity
多 PID -p 2231,2256,2257(横跨 root 与 demo 用户):
$ htop -p 2231,2256,2257
PID USER PRI NI VIRT RES SHR S CPU%▽MEM% TIME+ Command
2231 root 20 0 4364 3264 3020 S 0.0 0.0 0:00.00 bash -c sleep 3600; sleep 3600
2256 demo 20 0 4364 3128 2892 S 0.0 0.0 0:00.00 bash -c sleep 3600 & sleep 3600 & wait
2257 demo 20 0 2792 1548 1456 S 0.0 0.0 0:00.00 sleep 3600
-p 与 -u 的差别:-p 精确到进程个体且忽略用户,适合"盯着某几个可疑 PID 看"的场景;空格分隔无效,必须是逗号且无空格。
4.5 -s / --sort-key:排序列(含全列清单与非法列负例)
先看合法列的拼写要求。-s COMMAND 直接被拒:
$ htop -s COMMAND
Error: invalid column "COMMAND".
按帮助提示改用小写内部列名 COMM 成功(列表按 Command 列内容排序,此时默认的 CPU% 降序标记从表头消失):
$ htop -s COMM
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1970 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 pkill
2216 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 pkill
2231 root 20 0 4364 3264 3020 S 0.0 0.0 0:00.00 bash -c sleep 3600; sleep 3600
2256 demo 20 0 4364 3128 2892 S 0.0 0.0 0:00.00 bash -c sleep 3600 & sleep 3600 & wait
2580 root 20 0 8544 4152 3308 R 0.0 0.0 0:00.00 htop -s COMM
1 root 20 0 2792 1532 1440 S 0.0 0.0 0:00.01 sleep infinity
2237 root 20 0 2792 1664 1572 S 0.0 0.0 0:00.00 sleep 3600
2238 root 20 0 2792 1652 1560 S 0.0 0.0 0:00.01 sleep 3600
--sort-key=help 给出全部合法列名(htop 3.0.5 共 61 列,实测完整回显):
$ htop --sort-key=help
PID
Command
STATE
PPID
PGRP
SESSION
TTY_NR
TPGID
MINFLT
CMINFLT
MAJFLT
CMAJFLT
UTIME
STIME
CUTIME
CSTIME
PRIORITY
NICE
STARTTIME
PROCESSOR
M_VIRT
M_RESIDENT
M_SHARE
M_TRS
M_DRS
M_LRS
M_DT
ST_UID
PERCENT_CPU
PERCENT_MEM
USER
TIME
NLWP
TGID
PERCENT_NORM_CPU
CTID
VPID
VXID
RCHAR
WCHAR
SYSCR
SYSCW
RBYTES
WBYTES
CNCLWB
IO_READ_RATE
IO_WRITE_RATE
IO_RATE
CGROUP
OOM
IO_PRIORITY
PERCENT_CPU_DELAY
PERCENT_IO_DELAY
PERCENT_SWAP_DELAY
M_PSS
M_SWAP
M_PSSWP
CTXT
SECATTR
COMM
EXE
CWD
经验:-s 接受的是内部大写列名或其等价小写显示名(PID/COMM/PERCENT_CPU/USER…),而不是界面表头的 CPU%、Command 这类人类拼写。记不准就用 --sort-key=help 现查。
4.6 -t / --tree:树视图(可与 -s 组合)
$ htop -t
PID△USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1 root 20 0 2792 1532 1440 S 0.0 0.0 0:00.01 sleep infinity
1970 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 ├─ pkill
2216 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 └─ pkill
2231 root 20 0 4364 3264 3020 S 0.0 0.0 0:00.00 bash -c sleep 3600; sleep 3600
2237 root 20 0 2792 1664 1572 S 0.0 0.0 0:00.00 └─ sleep 3600
2238 root 20 0 2792 1652 1560 S 0.0 0.0 0:00.01 sleep 3600
2250 root 20 0 7052 4296 3732 S 0.0 0.0 0:00.01 su demo -c sleep 3600 & sleep 3600 & wait
2256 demo 20 0 4364 3128 2892 S 0.0 0.0 0:00.00 └─ bash -c sleep 3600 & sleep 3600 & wait
…(2257/2258 挂在 2256 下,同上省略)…
树视图三个特征:表头排序标记移到 PID△(树视图强制按 PID 排以保持父子相邻);子进程用 ├─/└─ Unicode 树线缩进;僵尸 pkill 被挂到 PID 1 下。
与 -s 组合 -t -s PID(显式按 PID 排,效果与默认树一致):
$ htop -t -s PID
PID△USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1 root 20 0 2792 1532 1440 S 0.0 0.0 0:00.01 sleep infinity
1970 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 ├─ pkill
2216 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 └─ pkill
2231 root 20 0 4364 3264 3020 S 0.0 0.0 0:00.00 bash -c sleep 3600; sleep 3600
2237 root 20 0 2792 1664 1572 S 0.0 0.0 0:00.00 └─ sleep 3600
2238 root 20 0 2792 1652 1560 S 0.0 0.0 0:00.01 sleep 3600
4.7 -U / --no-unicode:退化为 ASCII 字符
-t -U 组合,树线由 ├─/└─ 变为纯 ASCII 的 `-,表头 PID△ 的三角形排序标记也变成 PID+:
$ htop -t -U
PID+USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1 root 20 0 2792 1532 1440 S 0.0 0.0 0:00.01 sleep infinity
1970 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 `- pkill
2216 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 `- pkill
2231 root 20 0 4364 3264 3020 S 0.0 0.0 0:00.00 bash -c sleep 3600; sleep 3600
2237 root 20 0 2792 1664 1572 S 0.0 0.0 0:00.00 `- sleep 3600
2238 root 20 0 2792 1652 1560 S 0.0 0.0 0:00.01 sleep 3600
2250 root 20 0 7052 4296 3732 S 0.0 0.0 0:00.01 su demo -c sleep 3600 & sleep 3600 & wait
2256 demo 20 0 4364 3128 2892 S 0.0 0.0 0:00.00 `- bash -c sleep 3600 & sleep 3600 & wait
适用场景:老终端 / 串口日志、字符集不是 UTF-8 的环境(如 LC_ALL=C 下树线乱码时)。
4.8 -F / --filter:按命令名子串过滤
$ htop -F sleep
PID USER PRI NI VIRT RES SHR S CPU%▽MEM% TIME+ Command
1 root 20 0 2792 1532 1440 S 0.0 0.0 0:00.01 sleep infinity
2231 root 20 0 4364 3264 3020 S 0.0 0.0 0:00.00 bash -c sleep 3600; sleep 3600
2237 root 20 0 2792 1664 1572 S 0.0 0.0 0:00.00 sleep 3600
2238 root 20 0 2792 1652 1560 S 0.0 0.0 0:00.01 sleep 3600
2250 root 20 0 7052 4296 3732 S 0.0 0.0 0:00.01 su demo -c sleep 3600 & sleep 3600 & wait
2256 demo 20 0 4364 3128 2892 S 0.0 0.0 0:00.00 bash -c sleep 3600 & sleep 3600 & wait
2257 demo 20 0 2792 1548 1456 S 0.0 0.0 0:00.00 sleep 3600
2258 demo 20 0 2792 1624 1532 S 0.0 0.0 0:00.00 sleep 3600
注意 -F 是对完整命令行做子串匹配(help 原文 commands matching the given filter),所以 2231 bash -c sleep 3600; sleep 3600 和 2250 su demo -c … 这种命令行里含 sleep 字样的父进程也一并命中——这与 -u 按字段精确匹配不同,宽得多。运行中按 F4 可随时改这个过滤器。
4.9 -C / --no-color:单色方案
$ htop -C
0[#*** 16.1%] 3[* 2.0%] 6[#############100.0%] 9[# 2.0%]
1[* 2.0%] 4[##* 8.0%] 7[##* 8.0%] 10[ 0.0%]
2[* 3.9%] 5[#* 5.9%] 8[ 0.0%] 11[# 4.2%]
Mem[||||||||||||||||||||||##**********14.8G/31.3G] Tasks: 12, 0 thr; 1 running
Swp[||||||||||||||||||||||||||||||||||2.00G/2.00G] Load average: 1.99 1.41 1.45
Uptime: 03:16:49
PID USER PRI NI VIRT RES SHR S CPU%▽MEM% TIME+ Command
1 root 20 0 2792 1532 1440 S 0.0 0.0 0:00.01 sleep infinity
…(进程列表同 4.1)…
单色模式下仪表条以 #(高频段)和 *(低频段)两种字符区分负载强度——彩色版里它们分别是绿/蓝等色段;抓屏还原后仍可辨认。适合无色彩能力的终端或截图打印场景。
4.10 -H / --highlight-changes:高亮新旧进程
$ htop -H 5
PID USER PRI NI VIRT RES SHR S CPU%▽MEM% TIME+ Command
2843 root 20 0 4364 3224 2968 S 2.0 0.0 0:00.01 bash /tmp/jq_5.sh
1 root 20 0 2792 1532 1440 S 0.0 0.0 0:00.01 sleep infinity
2216 root 20 0 0 0 0 Z 0.0 0.0 0:00.00 pkill
2231 root 20 0 4364 3264 3020 S 0.0 0.0 0:00.00 bash -c sleep 3600; sleep 3600
2237 root 20 0 2792 1664 1572 S 0.0 0.0 0:00.00 sleep 3600
2238 root 20 0 2792 1652 1560 S 0.0 0.0 0:00.01 sleep 3600
…(同 4.1)…
-H 5 表示对最近 5 秒内出现或退出的进程做高亮(新进程整行加亮、刚消失的进程留影渐隐)。抓屏瞬间刚启动的 bash /tmp/jq_5.sh(2843)被排到列表最前并高亮(彩色版为黄色/绿色行)。不带 =DELAY 时使用默认时长。适合盯着"这一分钟里新冒出来谁"的排查场景。
4.11 -M / --no-mouse:禁用鼠标
$ htop -M
界面渲染与默认首屏完全一致(抓屏同 4.1,此处不重复贴)。该参数只在交互层面生效——禁用鼠标点击选中/滚动支持,对界面显示零影响,键盘操作不变。远程会话中鼠标转义序列干扰复制粘贴时用它。
4.12 -V / --version 与 -h / --help
$ htop -V
htop 3.0.5
$ htop -h
htop 3.0.5
(C) 2004-2019 Hisham Muhammad. (C) 2020 htop dev team.
Released under the GNU GPLv2.
…(同 2.2 参数表,略)…
注意 htop 没有类似 top 的 -v 短变体;-V 输出一行,-h 输出帮助全文。
五、报错与边界实测
全部负例在 110×34 终端与无终端两种环境实测:
$ htop -x
htop: invalid option -- 'x'
$ htop --readonly
htop: unrecognized option '--readonly'
--readonly是 htop 3.1+ 才引入的选项,本机的 3.0.5 不识别——升级到 3.1 以上才有"只读打开防误按 F9"能力。
$ htop -s NOSUCH
Error: invalid column "NOSUCH".
$ htop -s COMMAND
Error: invalid column "COMMAND".
排序列报错分两路:
-s后跟未知名单,双引号包住原词回显;表头拼写(COMMAND/CPU%)不属于内部列名,同样被拒。合法值以--sort-key=help清单为准(4.5)。
无终端环境(重定向管道、无 TERM)直接拒绝启动:
$ htop < /dev/null
Error opening terminal: unknown.
这正是 htop 没有批处理模式的直接体现:需要文本快照请用 top -b 或 ps。
六、交互键位与工作场景组合
6.1 底栏 F1-F10 键位(实测抓屏自 4.1 首屏底行)
| 键 | 功能 | 说明 |
|---|---|---|
| F1 | Help | 帮助页(全部按键含方向键/空格/数字键说明) |
| F2 | Setup | 列配置、仪表、配色、显示选项(可持久化到 ~/.config/htop/htoprc) |
| F3 | Search | 增量搜索命令名,回车跳下一个匹配 |
| F4 | Filter | 等价于 -F 的运行时版本 |
| F5 | Tree | 树视图开关,等价于 -t |
| F6 | SortBy | 选排序列,等价于 -s |
| F7 / F8 | Nice - / + | 对选中进程降/升 nice 值(root 可调任意进程) |
| F9 | Kill | 发信号菜单(默认 SIGTERM,可选 SIGKILL 等) |
| F10 | Quit | 退出(q 同效) |
6.2 组合套路
# 只看某用户的进程树(排查一个账号在跑什么)
$ htop -u demo -t
# 树视图 + ASCII 字符:串口/老终端也不乱码
$ htop -t -U
# 盯住某几个 PID 的 0.5 秒级动态(抓 CPU 突刺)
$ htop -p 2231,2256,2257 -d 5
# 高亮最近 5 秒的新进程,按内存列排序找泄漏苗头
$ htop -H 5 -s PERCENT_MEM
# 单色 + 无鼠标:最小干扰的演示/录屏模式
$ htop -C -M
以上组合均由本篇已实测参数构成,行为可由对应小节推得。
七、速查表
| 场景 | 命令 |
|---|---|
| 版本 / 帮助 | htop -V / htop -h |
| 排序列名速查 | htop --sort-key=help |
| 0.5 秒刷新 | htop -d 5(单位 0.1 秒) |
| 只看某用户 | htop -u demo;htop -u 看自己;空结果合法 |
| 只看指定 PID | htop -p 1,2231,2256(逗号分隔) |
| 按命令行过滤 | htop -F sleep(子串匹配完整命令行) |
| 树视图 | htop -t;组合排序 htop -t -s PID |
| ASCII 树线 | htop -t -U |
| 单色 | htop -C |
| 高亮新旧进程 | htop -H 5(5 秒窗口) |
| 禁鼠标 | htop -M |
| 非法排序列 | -s COMMAND → Error: invalid column "COMMAND". |
| 无终端 | Error opening terminal: unknown. |
一句话收束:htop 的命令行参数全是"启动视角预设",把 -u/-p/-s/-t/-F 五件套用熟即可覆盖 90% 的进场姿势;其余微调(F2 配置、F7/F8 nice、F9 kill)留给界面内完成。