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 交互键位速查,全部命令与回显真实可复现。

Linux命令系统监控Linux系统UbuntuUbuntu 22.04命令行2026/10/17

htop 命令详解与参数实测(Ubuntu 22.04)

目标:全面掌握 htop 的每一个命令行参数——无参数首屏逐区解读、-d 刷新间隔、-u 用户过滤、-p PID 白名单、-s 排序列(含 --sort-key=help 全列清单与非法列负例)、-t 树视图、-U ASCII 字符、-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]按用户过滤,缺省为 $USER4.3
-p PID[,PID…]PID 白名单4.4
-s COLUMN排序列,配合 --sort-key=help 查全列4.5
-t树视图,可与 -s 组合4.6
-U禁用 Unicode,树线退化为 ASCII4.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 首屏底行)

键功能说明
F1Help帮助页(全部按键含方向键/空格/数字键说明)
F2Setup列配置、仪表、配色、显示选项(可持久化到 ~/.config/htop/htoprc)
F3Search增量搜索命令名,回车跳下一个匹配
F4Filter等价于 -F 的运行时版本
F5Tree树视图开关,等价于 -t
F6SortBy选排序列,等价于 -s
F7 / F8Nice - / +对选中进程降/升 nice 值(root 可调任意进程)
F9Kill发信号菜单(默认 SIGTERM,可选 SIGKILL 等)
F10Quit退出(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 看自己;空结果合法
只看指定 PIDhtop -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)留给界面内完成。

站内相关:btop 篇、glances 篇