gtop 1.1.5 常用 CLI 命令与工具详解

把 gtop 1.1.5 的全部命令面一次讲透——它只有 1 个启动命令加 5 个交互键(p/c/m 排序、q/Esc/Ctrl+C 退出),本文逐键实测键位行为(含表头排序箭头的实时迁移、退出码验证)、给出 tmux 会话托管与抓屏验证方法,并对界面七图块逐一解读、与 uptime/free/df 的系统真实值交叉核对。全部命令与回显均在 Debian 12(Node.js v22.23.4 + gtop 1.1.5)实测通过。

gtop系统监控LinuxNode.js命令行2026/10/23

gtop 1.1.5 常用 CLI 命令与工具详解

目标:把 gtop 1.1.5 的全部命令面一次讲透——它只有 1 个启动命令加 5 个交互键(p/c/m 排序、q/Esc/Ctrl+C 退出),本文逐键实测键位行为(含表头排序箭头的实时迁移、退出码验证)、给出 tmux 会话托管与抓屏验证方法,并对界面七图块逐一解读、与 uptime/free/df 的系统真实值交叉核对。全部命令与回显均在 Debian 12(Node.js v22.23.4 + gtop 1.1.5)实测通过。

一、环境信息

  • 操作系统:Debian 12(bookworm),x86_64,12 核 CPU、32 GB 内存(free -m 实测 Mem: 32050)
  • Node.js:v22.23.4(npm 10.9.9)
  • gtop:1.1.5(npm 全局安装,入口 /usr/local/bin/gtop)
  • 终端环境:tmux 3.3a(TERM=xterm-256color、LANG=C.UTF-8)
  • 参考基准:gtop 官方 man 手册源 CLI.md(随 v1.1.5 npm 包分发)与包内源码 lib/gtop.js、lib/monitor/proc.js

二、工具概览

gtop 的命令面极小,这是它的设计取向:一个命令进入仪表盘,之后的一切交互都在键盘上完成。官方 CLI.md(/usr/local/lib/node_modules/gtop/CLI.md,随包分发)对命令面的完整声明如下(原文照录):

GTOP
=====

> gtop - System monitoring dashboard for terminal

## SYNOPSIS

`gtop`


## DESCRIPTION

gtop is a system monitoring dashboard for terminal much like htop, top, etc...

## INTERACTIVE COMMANDS

The following commands are supported while in gtop:

- `p` sort the process table by Process Id
- `c` sort the process table by CPU usage
- `m` sort the process table by Memory usage

即官方声明:SYNOPSIS 只有裸命令 gtop(无任何选项),交互命令只有 p/c/m 三个排序键。结合包内源码(lib/gtop.js 中 screen.key(['escape', 'q', 'C-c'], ...))与本文实测,gtop 完整键位速查如下:

输入作用生效范围实测结果
gtop启动全屏仪表盘shell 命令行启动 TUI(本文 4.1)
p进程表按 PID 排序运行中界面表头箭头移至 PID(4.3)
c进程表按 CPU 占用排序运行中界面表头箭头移至 %CPU(4.3)
m进程表按内存占用排序运行中界面表头箭头移至 %MEM(4.3)
q / Esc / Ctrl+C退出 gtop运行中界面退出码 0(4.2)

不存在的东西(均实测确认,详见 4.1 与 4.4):命令行参数/子命令、非交互模式、配置文件。

三、前置条件

  • 已安装 gtop 1.1.5 并通过 which gtop 验证(安装过程见 《Ubuntu 24.04 安装 gtop 1.1.5 指南》);
  • 一个真实的交互终端(本机 tty、SSH 会话或 tmux/screen 会话),locale 为 UTF-8、TERM 为真实终端类型(环境变量细节见 《gtop 1.1.5 配置参数详解》第四节);
  • 本文的抓屏验证用 tmux,未安装时先执行 apt-get install -y tmux。

四、gtop 命令与交互键详解

4.1 启动命令 gtop:不带任何参数

官方 SYNOPSIS 就是裸命令。启动:

gtop

进入全屏仪表盘(画面构成见「六、界面解读」)。需要特别实测确认的是:gtop 会忽略一切命令行参数——--help、--version 之类写什么都照常进入 TUI,不会打印帮助文本或版本号。实测(用伪终端执行并统计输出字节数,与正常 TUI 输出同量级即证明 TUI 已启动):

timeout 5 script -q -c "stty cols 120 rows 40; gtop --help" /dev/null </dev/null | wc -c
timeout 5 script -q -c "stty cols 120 rows 40; gtop --version" /dev/null </dev/null | wc -c

实测回显:

8552
8579

两次输出分别约 8.5 KB(与正常运行的屏幕输出一致),证明参数被无视、TUI 照常渲染。查版本号的正确姿势是 npm 层面:npm ls -g gtop(实测回显 gtop@1.1.5)。源码依据:入口脚本 bin/gtop 仅三行 require('../lib/gtop').init(),无任何 argv 解析。

4.2 退出:q / Esc / Ctrl+C,退出码 0

三个键等价,源码绑定在同一处理器上(lib/gtop.js 实查):

screen.key(['escape', 'q', 'C-c'], function(ch, key) {
  return process.exit(0);
});

实测按 q 的完整验证(tmux 会话内启动,注入 q,检查退出码与终端恢复):

tmux new-session -d -s gtop -x 120 -y 40 'gtop'
sleep 5
tmux send-keys -t gtop q
sleep 1
tmux ls

实测回显:

no server running on /tmp/tmux-0/default

tmux 会话随 gtop 进程消失而自动关闭,说明 gtop 已退出;同一验证在 script 伪终端下重复,script 记录的子进程退出码为 0(COMMAND_EXIT_CODE="0"),且抓屏尾部可见终端恢复序列(退出备用屏缓冲 ^[[?1049l、恢复光标 ^[[?25h)——q 退出后终端状态正常还原,退出码 0。

4.3 进程表排序:p / c / m(含反向排序)

进程表(Processes 图块)默认按 %CPU 降序展示,表头当前排序列带实心下三角标记。启动后立即抓取表头行:

tmux capture-pane -t gtop -p | grep PID

实测回显(初始状态,箭头在 %CPU):

x                                                          xxPID    Command                 %CPU▼  %MEM                x

按 m(按内存排序),等 3 秒让界面重绘后再抓:

tmux send-keys -t gtop m && sleep 3 && tmux capture-pane -t gtop -p | grep PID

实测回显(箭头移到 %MEM):

x                                                          xxPID    Command                 %CPU   %MEM▼               x

再按 p(按 PID 排序):

tmux send-keys -t gtop p && sleep 3 && tmux capture-pane -t gtop -p | grep PID

实测回显(箭头移到 PID):

x                                                          xxPID▼   Command                 %CPU   %MEM                x

反向排序:源码(lib/monitor/proc.js)对"重复按同一键"的处理是 that.reverse = !that.reverse——即再按一次相同的键就反转升降序(默认降序 → 反转后升序)。配合 c 键即得"按 CPU 升序/降序"来回切换。键位与官方 CLI.md 声明一致,行为细节以源码与上述实测为准。

4.4 没有非交互模式(实测结论与替代验证法)

gtop 没有批处理/非交互运行方式:参数被忽略(4.1),且在无 tty 的环境里直接崩溃退出。实测在管道重定向下执行:

gtop --version 2>&1 | head -3

实测回显(退出码 1):

Error: Width must be multiple of 2!
    at new Canvas (/usr/local/lib/node_modules/gtop/node_modules/drawille-blessed-contrib/index.js:10:11)
    at new Context (/usr/local/lib/node_modules/gtop/node_modules/drawille-canvas-blessed-contrib/index.js:11:18)

替代验证法:要在脚本里拿到 gtop 的"当前画面",用 tmux 抓屏而非给 gtop 传参数——先起 tmux 会话跑 gtop,再 tmux capture-pane -t gtop -p(本文全部实测回显即由此法取得)。

五、tmux 会话托管(推荐的常驻方式)

gtop 是交互式 TUI,断开 SSH 即退出。长时驻留用 tmux 托管(screen 同理,本文以 tmux 为准逐条实测):

# 1. 新建命名会话并指定尺寸启动 gtop(-d 后台建立,不立即进入)
tmux new-session -d -s gtop -x 120 -y 40 'gtop'

# 2. 进入/离开会话
tmux attach -t gtop        # 进入(Ctrl+B 再按 D 可脱离会话,gtop 继续运行)

# 3. 抓取当前画面文本(脚本化巡检用)
tmux capture-pane -t gtop -p

# 4. 向会话注入按键(本文排序/退出实测均用此法)
tmux send-keys -t gtop m   # 等价于人在界面里按 m

# 5. 会话管理
tmux ls                    # 列出会话
tmux kill-session -t gtop  # 强制结束(等价于杀掉 gtop 进程)

说明:-x 120 -y 40 在后台建立会话时锁定尺寸,避免"后台会话无尺寸导致 gtop 报错"(gtop 前置要求见 《gtop 1.1.5 配置参数详解》4.3);attach 进去后尺寸随终端自适应并触发 gtop 重排(源码注册了 screen.on('resize') 处理)。

六、界面解读与数据核对

6.1 全屏实拍(120×40,tmux 抓屏原样照录)

lqCPU Historyqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x     ⡇                                                                                                                x
x  80 ⡇                                                                                                lqqqqqqqqqqqqqk x
x  60 ⡇                                                                                                xCPU1   4.1%  x x
x     ⡇                                                                                                xCPU2   5.1%  x x
x  40 ⡇                                                                                                xCPU3  18.4%  x x
x     ⡇                                                                                                xCPU4   6.3%  x x
x  20 ⡇                                                                                                xCPU5   6.1%  x x
x  0  ⡇⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⡼xCPU6   8.2%  x x
x     ⠓⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒xCPU7   9.3%  x x
x                                                                                                      xCPU8   5.2%  x x
x                                                                                                      xCPU9   6.2%  x x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqxCPU10   5.1% xqj
lqMemory and Swap HistoryqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqklqMemoryqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x     ⡇                                                             ⡇          xx               ⣾⡿⠉ ⠈⠹⣿⡆               x
x  80 ⡇                                                            ⢸lqqqqqqqqk xx               ⣿⣧ 60%⣿⡇               x
x  60 ⡇                                                            ⢸xMemory  x xx               ⠈⠻⢿⣶⣾⠿⠋                x
x     ⡇                                                            ⣸xSwap    x xx                                      x
x  40 ⡇                                                            ⣿mqqqqqqqqj xmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
x     ⡇                                                            ⡟           x
x  20 ⡇                                                           ⢠⡇           xlqSwapqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x  0  ⡇⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣸            xx               ⣾⡿⠉ ⠈⠹⣿⡆               x
x     ⠓⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒⠒    xx               ⣿⣧ 99%⣿⡇               x
x                                                                              xx               ⠈⠻⢿⣶⣾⠿⠋                x
x                                                                              xx                                      x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
lqNetwork HistoryqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqklqProcessesqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x                                                          xxPID    Command                 %CPU▼  %MEM                x
xReceiving:      0.00 B/s                                  xx                                                          x
xTotal received: 15.40 MiB:                                xx 21187  node                     0.1   0.2                x
x▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁xx 1261   node                     0.1   0.3                x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjx 1      sleep infinity           0.0   0.0                x
                                                            x 139    sh                       0.0   0.0                x
lqDisk usageqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx 141    node                     0.0   0.0                x
x                         ⣾⡿⠉ ⠈⠹⣿⡆                         xx 339    sh                       0.0   0.0                x
x                         ⣿⣧ 61%⣿⡇                         xx 341    node                     0.0   0.0                x
x                         ⠈⠻⢿⣶⣾⠿⠋                          xx 707    sh                       0.0   0.0                x
x                                                          xx 709    node                     0.0   0.0                x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

说明:抓屏文本中边框以 lq…k(终端 ACS 线条字符的文本形式)呈现,在真实终端里渲染为连续的制表线条;曲线区为 Braille 盲文字符点阵,实际显示为实线折线与环形图。

6.2 七图块逐块解读

图块内容数据来源与刷新解读要点
CPU History逐核使用率折线,纵轴 0–100%,右侧图例逐核显示实时百分比(上例 12 核:CPU1 4.1%、CPU3 18.4% … CPU10 5.1%)si.currentLoad,1 秒图例百分比即"当前值";曲线保留最近 60 个采样点(源码初始化 61 点数组)
Memory and Swap History内存/Swap 使用率两条曲线,图例标注 Memory/Swapsi.mem,1 秒与右侧双环形图同一数据源的时序视图
Memory内存使用率环形图(上例 60%)si.mem,1 秒百分比 = 已用/总量(核对见 6.3)
SwapSwap 使用率环形图(上例 99%)si.mem,1 秒未启用 Swap 的机器会显示 0% 或空
Network History默认网卡收发速率迷你图 + 两行文本:Receiving: 0.00 B/s(实时接收速率)与 Total received: 15.40 MiB(开机以来累计接收量)si.networkStats,1 秒文本行固定在图块内,迷你图为速率序列
Disk usage文件系统使用率环形图(上例 61%)si.fsSize,10 秒多分区机器显示挂载点列表中对应项(单分区即为根分区)
Processes进程表四列:PID、Command、%CPU、%MEM;表头带排序箭头si.processes,3 秒默认 %CPU 降序;p/c/m 换列,同键再按反转升降序(4.3)

6.3 与系统真实值交叉核对(验证仪表盘可信)

gtop 显示值应能与系统命令对上。以 6.1 全屏实拍所在时刻为例,同机执行:

uptime
nproc
free -m | head -2
df -h / | tail -1

实测回显:

 02:26:40 up 3 days, 10:38,  0 user,  load average: 1.01, 1.16, 1.20
12
               total        used        free      shared  buff/cache   available
Mem:           32050       19282         309         583       13575       12768
overlay         786G  456G  296G  61% /

逐项对照:

  • Memory 环形图 60% ↔ free -m:used 19282 / total 32050 ≈ 60.2%,一致;
  • Disk usage 环形图 61% ↔ df -h /:使用率 61%,一致;
  • CPU 图例 12 项(CPU1–CPU12) ↔ nproc = 12,一致;
  • CPU 逐核低占用、曲线贴地 ↔ load average: 1.01, 1.16, 1.20(12 核机器上平均单核负载 <10%),量级一致。

结论:gtop 各图块数值与系统命令口径吻合(内存按"已用/总量"、磁盘按文件系统使用率、CPU 按逐核瞬时占用),显示可信。

七、注意事项

  1. 参数会被静默忽略:gtop --help、gtop -v 不会报错也不会给提示,直接进 TUI——写运维脚本时不要依赖参数做判断(实测见 4.1)。
  2. 必须有人值守的终端:后台/管道执行必崩(实测退出码 1,见 4.4);驻留场景用 tmux 托管(第五节)。
  3. 排序只影响显示,不作用于系统:gtop 不能 kill/renice 进程,进程管理需求请用 htop。
  4. Disk usage 每 10 秒才刷新:刚挂载/卸载分区后环形图有最长 10 秒滞后,属源码设定(刷新间隔表见 《gtop 1.1.5 配置参数详解》第五节)。
  5. 数据自开机起算:Network 的 Total received、CPU 历史曲线的起点都与系统开机时间相关,重启后从零开始。

八、常见问题(FAQ)

Q1:启动报 Error: Width must be multiple of 2!?

环境里没有可用的终端尺寸(stdout 非 tty / 伪终端 0×0)。在真实终端或 tmux 会话内运行即可;完整定位过程与复现命令见 《Ubuntu 24.04 安装 gtop 1.1.5 指南》常见问题 Q1。

Q2:界面出现问号/乱码?

locale 与 TERM 问题:LANG=en_US.utf8 TERM=xterm-256color gtop 启动(官方 README 推荐写法);详细实测对照见《gtop 1.1.5 配置参数详解》4.1/4.2 节。

Q3:man gtop 没有手册页?

npm 全局安装不会把包内 gtop.1 装进系统 manpath(实测 man gtop 无输出)。官方命令文档直接读包内文件:cat /usr/local/lib/node_modules/gtop/CLI.md(内容已在本文第二节照录)。

Q4:怎么把当前仪表盘画面存档?

用 tmux 抓屏:tmux capture-pane -t gtop -p > /var/log/gtop-$(date +%F-%H%M).txt。gtop 自身无导出/截图功能。

Q5:按了 m 之后进程表没变化?

排序变更在下一次数据刷新时生效(进程表刷新间隔 3 秒),等 3 秒再看;本文实测时统一 sleep 3 后抓屏即观察到箭头迁移。另外注意表头箭头位置就是当前排序列,先确认箭头是否已经移动。

九、参考链接

  1. 官方 man 手册源(随 v1.1.5 npm 包分发):/usr/local/lib/node_modules/gtop/CLI.md
  2. gtop 项目主页(Usage/Troubleshooting):https://github.com/aksakalli/gtop
  3. 本系列认知篇:《gtop 介绍与选型指南》
  4. 本系列安装篇:《Ubuntu 24.04 安装 gtop 1.1.5 指南》
  5. 本系列配置篇:《gtop 1.1.5 配置参数详解》