Ubuntu 22.04 nmon 安装与命令参数详解

在 Ubuntu 22.04 上从零安装 nmon 16n(在线与离线两种方式),并逐条实测全部命令行参数、交互式监控面板与真实输出,附版本差异与命令速查表

Linux 系统监控与诊断nmonUbuntu 22.042026/10/06

Ubuntu 22.04 nmon 安装与命令参数详解

目标:在 Ubuntu 22.04(x86_64)服务器上从零安装 nmon 16n(在线 apt 与离线 deb 两种方式),并逐条实测全部命令行参数、单键交互式监控面板(c/m/d/n/t/r/k/j/v)与后台采集输出,给出真实回显、版本差异与命令速查表;命令与输出均来自本环境真实实测。

一、环境信息

  • 操作系统:Ubuntu 22.04(/etc/os-release 中 DISTRIB_ID=Ubuntu)
  • 内核版本:Linux 6.8.0-138-generic(#138~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 7 13:43:15 UTC)
  • 内核编译:x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04.3) 12.3.0
  • 系统架构:x86_64(Machine: x86_64)
  • CPU 核数:6(# of CPUs: 6)
  • 内存 / 交换:RAM Total 32050.4 MB / Swap 2048.0 MB
  • 主机名:mon-ubuntu2204
  • nmon 版本:16n(deb 包名 nmon 16n+debian-1 amd64)
  • 安装来源:Ubuntu 官方 jammy/universe 仓库(http://archive.ubuntu.com/ubuntu)

二、工具概览

nmon(Nigel's Monitor)是由 IBM 工程师 Nigel Griffiths 开发的 Linux 全面性能监控工具。它的核心特点有二:

  1. 单屏交互式监控:在一个终端界面里用单键(c/m/d/n/t/r/k/j/v 等)开/关不同维度的实时面板,适合在服务器现场快速巡检 CPU、内存、磁盘 I/O、网络、进程、内核负载、文件系统等指标。
  2. 后台无交互采集:用 -f 参数让 nmon 脱离终端,按 -s 指定间隔、-c 指定次数把指标写入 .nmon 数据文件,供事后分析(可配合 nmonchart 转成图表)。

工作机制上,nmon 不依赖守护进程,而是以固定刷新间隔直接读取内核伪文件系统——/proc/stat(CPU/内核统计)、/proc/meminfo(内存)、/proc/diskstats(磁盘)、/proc/net/dev(网络)、/proc/*/status 等(进程内存),因此开销极低(死循环里它对自身 CPU 占用几乎可忽略),适合长时间挂机采集。

三、在线安装

Ubuntu 22.04 下 nmon 位于官方 jammy 发行版的 universe 组件仓库,直接用 apt 在线安装:

apt-get install -y nmon

真实下载回显(本环境 nmon 已安装,下方为 apt 从 jammy/universe 拉取 nmon 包的真实 Get 行):

Get:7 http://archive.ubuntu.com/ubuntu jammy/universe amd64 nmon amd64 16n+debian-1 [69.3 kB]

💡 说明:nmon 本体只有约 69.3 kB,无额外运行时依赖(交互模式下为单二进制);若重复执行安装,apt 会提示「already the newest version」且「0 upgraded, 0 newly installed」。

安装完成后做版本验证(dpkg -l 查包 + nmon -V 查二进制版本):

dpkg -l nmon
ii  nmon           16n+debian-1                 amd64        performance monitoring tool for Linux
nmon -V
nmon version 16n

结论:deb 包版本 16n+debian-1 与二进制内部版本 16n 一致。

四、离线安装

离线安装分「下载打包」与「本机安装」两步,适用于无法直连互联网的服务器。

4.1 下载 nmon 主包(在联网机执行)

方式一:apt-get download 只拉主包:

apt-get download nmon
nmon_16n+debian-1_amd64.deb

方式二:apt-get install --download-only 可将包(含依赖)落入指定目录。本环境批量离线包下载时 nmon 的真实回显:

Get:7 http://archive.ubuntu.com/ubuntu jammy/universe amd64 nmon amd64 16n+debian-1 [69.3 kB]
Download complete and in download only mode

下载后目录里的 nmon 包清单:

nmon_16n+debian-1_amd64.deb

4.2 离线安装(在目标机执行)

把 deb 拷贝到目标机后,用 dpkg -i 安装:

dpkg -i nmon_16n+debian-1_amd64.deb

💡 说明:dpkg -i 的回显为标准「Preparing to unpack / Unpacking / Setting up」三段(与日志中 htop 重装回显同格式)。安装后再用 dpkg -l nmon 与 nmon -V 验证即可,输出同第三章。

五、全部命令参数实测

以下每条命令/操作均在本环境真实执行,交互面板的文本帧照抄实测捕获。

5.1 版本查看:nmon -V

作用:打印 nmon 版本号后退出。

nmon -V
nmon version 16n

说明:-V(大写)与 --version 等价,用于确认二进制为 16n。

5.2 交互式主界面与按键提示

作用:不带参数直接启动,进入全屏交互监控;左上角提示按 H 获取帮助、按 q 退出。

nmon
┌nmon─16n─Hostname=mon-ubuntu220Refresh= 0secs ───04:46.44─┐
││
│   -│
│    _ __  _ __ ___   ___  _ __    For help type H or ...│
│   | '_ \| '_ ` _ \ / _ \| '_ \   nmon -?  - hint│
│   | | | | | | | | | (_) | | | |  nmon -h  - full details│
│   |_| |_|_| |_| |_|\___/|_| |_|  │
│                                        To stop nmon type q to Quit│
│   -│
││
││
││
││
││
││
││
│   Use these keys to toggle statistics on/off:│
│     c = CPU         l = CPU Long-term     - = Faster screen updates│

说明:右上角第一行显示 Hostname=mon-ubuntu220(原文如此,终端宽度截掉了末尾)、刷新周期 Refresh= 0secs 与时间 04:46.44。常用快捷键含义见下表:

键面板键面板
cCPU 使用率m内存与交换
d磁盘 I/On网络 I/O
tTop 进程r资源/内核信息
k内核与负载j文件系统
v详细模式q退出
lCPU 长期平均- / +加快 / 放慢刷新

5.3 c 键:CPU 使用率面板

作用:显示每核与平均的 User%/Sys%/Wait%/Idle%,右侧为 ASCII 柱状图。

进入界面后按 c 键:

┌nmon─16n───────2 for help]───Hostname=mon-ubuntu220Refresh= 2secs ───04:46.50─┐
│ CPU Utilisation ─│
│-+-+│
│CPU User%  Sys% Wait%  Idle|0          |25         |50          |75100|│
│  1   5.4  13.2   0.0  81.5|UUssssss>                            |│
│  2   5.5   8.0   0.0  86.4|UUssss>
│  3   7.2   7.2   0.0  85.6|UUUsss>
│  4   6.7   6.2   0.5  86.6|UUUsss>
│  5   5.2   4.7   0.0  90.1|UUss>
│  6   7.4   9.6   0.0  83.0|UUUssss>
│-+-+│
│Avg   6.2   8.1   0.1  85.5|UUUssss>|
│-+-+│
│─│

说明:末行 Avg 为 6 核平均(User 6.2% / Sys 8.1% / Wait 0.1% / Idle 85.5%)。柱状图里 U=User、s=System,> 表示已截断。

5.4 m 键:内存与交换面板

作用:显示 RAM / Swap 总量、空闲、空闲百分比,以及内核内部内存细分(Cached/Buffers/Slab/Dirty 等)。

┌nmon─16n───────9 for help]───Hostname=mon-ubuntu220Refresh= 2secs ───04:46.57─┐
│ Memory and Swap ─│
│ PageSize:4KB   RAM-Memory  Swap-SpaceHigh-Memory     Low-Memory│
│ Total (MB)        32050.4      2048.0- not in use   - not in use│
│ Free  (MB)         6440.3      1634.3│
│ Free Percent         20.1%       79.8%│
│ Linux Kernel Internal Memory (MB)│
│                        Cached=   15639.2     Active=    8052.1│
│ Buffers=     504.2 Swapcached=      49.7  Inactive =   15154.3│
│ Dirty  =      24.5 Writeback = 0.0  Mapped   =    3084.2│  3.9
│ Slab   =    1612.2 Commit_AS =   23098.1 PageTables=     143.6│
│─│

说明:本机 RAM 总量 32050.4 MB、空闲 6440.3 MB(Free Percent 20.1%);Swap 2048.0 MB、空闲 1634.3 MB(79.8%)。High-Memory / Low-Memory 两列在 64 位内核下均显示 - not in use。

5.5 d 键:磁盘 I/O 面板

作用:按磁盘展示 Busy 百分比与读写吞吐(KB/s),数据源自 /proc/diskstats。

┌nmon─16n───────5 for help]───Hostname=mon-ubuntu220Refresh= 2secs ───04:47.03─┐
│ Disk I/O ──/proc/diskstats────mostly in KB/s─────Warning:contains duplicates─│
│DiskName Busy  Read WriteKB|0          |25         |50          |75100|│
│loop0      0%    0.0    0.0|>     |
│loop1      0%    0.0    0.0|>|
│loop20%    0.0    0.0|>|
│loop30%    0.0    0.0|>|
│loop40%    0.0    0.0|>|
│loop50%    0.0    0.0|>|
│loop60%    0.0    0.0|>|
│loop70%    0.0    0.0|>|
│sda        1%    0.0 4066.9|>|

说明:标题行有 Warning:contains duplicates(分区与整盘会重复计入);本机 loop0~loop7 均为空闲,sda Busy 1%、Write 4066.9 KB/s。

5.6 n 键:网络 I/O 面板

作用:按网卡显示收发吞吐(KB/s)、包数、平均包大小、峰值,以及错误计数器。

┌nmon─16n───────2 for help]───Hostname=mon-ubuntu220Refresh= 2secs ───04:47.10─┐
│ Network I/O ─│
│I/F Name Recv=KB/s Trans=KB/s packin packout insize outsize Peak->Recv Trans  │
│lo      0.0       0.0       0.0    0.0     0.0    0.0        0.0      0.│
│    eth0      0.0       0.0       0.0    0.0     0.0    0.0        0.0      0.│
│ Network Error Counters ─│
│I/F Name iErrors iDrop iOverrun iFrame oErrors   oDrop oOverrun oCarrier oColl│
│lo00000000│
│    eth000000000│
│─│

说明:本机两张网卡 lo 与 eth0 当前空闲(收发均为 0),错误计数器(iErrors/iDrop/oErrors/oDrop 等)全为 0。

5.7 t 键:高负载进程 Top 面板

作用:按模式展示高负载/高占用进程(默认 mode=3 为 Perf 性能排序),列出 PID、CPU%、Size/KB、Res Set/Text/Data/Lib、共享内存、页错误与命令名。

┌nmon─16n───────8 for help]───Hostname=mon-ubuntu220Refresh= 2secs ───04:47.16─┐
│ Top Processes Procs=14-mode=3-1=Base 3=Perf 4=Size 5=I/O u=Args─│
│  PID    %%CPU  Size   Res   Res   Res   Res Shared   Faults  Command
││         Used    KB   Set  Text  Data   Lib    KB  Min  Maj
│ 1   0.0 19052 11828   896  3112     0  8236    0    0 systemd
││     23   0.0 39544 22096    92  8936     0 21144    0    0 systemd-journal
││     39   0.0 22520 10284   308   848     0  9004    0    0 systemd-resolve
││     41   0.0  8544  4812   140   756     0  4212    0    0 dbus-daemon
││     43   0.0 30188 19500  2776 10652     0 10544    0    0 networkd-dispat
││     44   0.0 14920  7100   136   608     0  6176    0    0 systemd-logind
││   9599   0.0  4364  3284   892   436     0  3020    0    0 bash
││   9666   0.0  3196  2216    28   364     0  2088    0    0 agetty

说明:统计到 14 个进程(Procs=14),mode=3 为 Perf 排序;因系统空闲,各进程 %%CPU 均为 0.0。

5.8 r 键:系统资源信息面板

作用:显示内核版本、编译信息、CPU 核数、架构、主机名、发行版标识。

┌nmon─16n───────5 for help]───Hostname=mon-ubuntu220Refresh= 2secs ───04:47.23─┐
│ Resources Linux & Processor ─│
│    Linux: Linux version 6.8.0-138-generic (buildd@lcy02-amd64-008)│
│    Build: (x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04.3) 12.3.0, G│
│    Release  : 6.8.0-138-generic│
│    Version  : #138~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug  7 13:43:15 UTC│
││
││
││
││
│    # of CPUs: 6│
│    Machine  : x86_64│
│    Nodename : mon-ubuntu2204│
│    /etc/*ease[1]: DISTRIB_ID=Ubuntu│

说明:/etc/*ease[1] 即 nmon 读取的 /etc/os-release 首行,确认发行版为 Ubuntu。

5.9 k 键:内核与负载面板

作用:显示全局 CPU 统计分解、load average(1/5/15 分钟)、运行/阻塞队列、上下文切换与 uptime。

┌nmon─16n───────31for help]───Hostname=mon-ubuntu220Refresh= 2secs ───04:47.29─┐
│ Kernel and Load Average ─│
│Global-CPU-Stats---->    40.5% userLoad Average  CPU use since boottime │
│ /proc/stat line 1        0.0% user_nice  1 mins  1.12 Uptime Days Hours Mins │
│100 ticks per second     75.0% system     5 mins  2.01 Uptime    4    12   39 │
│100%=1 CPUcoreThread    430.7% idle15 mins  2.22 Idle      3    68 3412 │
│ 2   Ru4Queue       0.0% iowait                        Uptime has overflowed  │
│ 0   Blocked        0.0% irq│

说明:load average 为 1.12 / 2.01 / 2.22;注意末行出现 Uptime has overflowed(新内核 6.8 下 nmon 对 uptime 计数位宽解析溢出的真实现象,详见第六章)。

5.10 j 键:文件系统使用面板

作用:列出各挂载点的文件系统类型、大小、已用百分比。

┌nmon─16n───────8 for help]───Hostname=mon-ubuntu220Refresh= 2secs ───04:47.36─┐
│ File Systems ─│
│Filesystem            SizeMB  FreeMB  Use% Type     MountPoint│
│overlay               804743  499106   34% overlay  /│
│/proc                      --     - proc     not a real filesystem     │
│/dev                       --     - tmpfs    not a real filesystem     │
│/dev/pts                   --     - devpts   not a real filesystem     │
│/sys                       --     - sysfs    not a real filesystem     │
│/dev/mqueue                --     - mqueue   not a real filesystem     │
│/dev/shm                   --     - tmpfs    not a real filesystem     │

说明:/proc、/dev、/sys 等虚拟文件系统被 nmon 标注为 not a real filesystem(无 SizeMB/FreeMB);根挂载 / 类型为 overlay、Use% 34%。

5.11 v 键:详细模式面板

作用:对若干关键资源给出「当前值 + 告警阈值(Warn/Danger)」的告警视图。

┌nmon─16n───────4 for help]───Hostname=mon-ubuntu220Refresh= 2secs ───04:47.42─┐
│ Verbose Mode ─│
│ Code    Resource            Stats   Now        Warn    Danger│
││
│     OK -> Top Disk      sda %busy  13.5%>40%    >60%│
││
││
│─│
││
││
││
││

说明:本环境只渲染出 Top Disk 一行——sda %busy 当前 13.5%,Warn 阈值 40%、Danger 阈值 60%,状态 OK(LPAR 等 AIX 专属指标在 x86_64 下为空,故面板其余行空白)。

5.12 后台数据采集:-f -s -c -m

作用:-f 进入 spreadsheet 后台采集模式(进程脱离终端、自动按小时生成文件名);-s 2 采样间隔 2 秒;-c 3 采集 3 次;-m /root 指定输出目录。

nmon -f -s 2 -c 3 -m /root
-rw-r--r-- 1 root root   755 Oct  6 04:47 /root/mon-ubuntu2204_261006_0447.nmon

说明:生成的文件名规则为 <主机名>_<YYMMDD>_<HHMM>.nmon(本机为 mon-ubuntu2204_261006_0447.nmon)。文件内头部 AAA 记录段实测如下:

==> /root/mon-ubuntu2204_261006_0447.nmon <==
AAA,progname,nmon
AAA,command,nmon -f -s 2 -c 3 -m /root 
AAA,version,16n
AAA,disks_per_line,150
AAA,max_disks,256,set by -d option
AAA,disks,22,
AAA,host,mon-ubuntu2204
AAA,user,(null)
AAA,OS,Linux,6.8.0-138-generic,#138~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug  7 13:43:15 UTC ,x86_64
AAA,runname,mon-ubuntu2204
AAA,time,04:47.47
AAA,date,06-OCT-2026

说明:AAA,command 记录触发本次采集的原始命令,可追溯参数;AAA,disks,22 表示磁盘段按 22 块盘记录;AAA,max_disks,256,set by -d option 表示 -d 选项可设定最大磁盘数。数据段(CPU)实测如下:

CPU001,CPU 1 mon-ubuntu2204,User%,Sys%,Wait%,Idle%,Steal%
CPU002,CPU 2 mon-ubuntu2204,User%,Sys%,Wait%,Idle%,Steal%
CPU003,CPU 3 mon-ubuntu2204,User%,Sys%,Wait%,Idle%,Steal%
CPU004,CPU 4 mon-ubuntu2204,User%,Sys%,Wait%,Idle%,Steal%

5.13 自定义文件名与 Top 进程开关:-F 与 -T

作用:-F /root/custom.nmon 指定输出文件全路径(覆盖默认命名规则);-T 让采集结果附带 Top 进程段。

nmon -F /root/custom.nmon -s 1 -c 2 -T
-rw-r--r-- 1 root root 767 Oct  6 04:47 /root/custom.nmon
TOP 记录段行数: 0

说明:文件内 AAA,command 记录为 nmon -F /root/custom.nmon -s 1 -c 2 -T。实测 TOP 记录段行数: 0(本环境短时采集下未生成 TOP 数据行,属 -T 与采集时长/进程活跃度的真实交互结果,见第六章说明)。

5.14 退出方式

  • 交互界面:按 q 即退出(本环境交互测试中随 timeout 结束)。
  • 采集模式:采满 -c 指定次数后进程自动退出,无需手工干预。

六、常见问题与真实行为

  1. Uptime has overflowed(k 面板) 现象:内核与负载面板末行显示 Uptime has overflowed。 原因:新内核(6.8)改变了 /proc/stat 中某些计数(如 idle ticks)的位宽或含义,nmon 16n 的 uptime 换算逻辑无法正确处理,判为「溢出」。 解决:属显示性告警,不影响 CPU 使用率、负载、内存等其它指标的正常采集;短期可忽略,长期建议升级到对内核 6.x 兼容性更好的 nmon 版本。

  2. 磁盘面板 Warning:contains duplicates 现象:磁盘 I/O 面板标题末尾提示 Warning:contains duplicates。 原因:nmon 直接遍历 /proc/diskstats,整盘与分区(如 sda 与 sda1)会重复计入总量。 解决:属正常提示;如需精确统计,可用 -d 限制磁盘数量或人工选择具体盘符读数。

  3. 文件系统面板的 overlay 与 not a real filesystem 现象:根挂载 / 类型显示 overlay,其余 /proc /dev /sys 等显示 not a real filesystem。 原因:本测试环境根文件系统为 overlay 挂载类型;/proc /dev /sys 等是内核虚拟文件系统,无真实容量,nmon 故标注 not a real filesystem。 解决:属如实展示,无需处理。

  4. -T 采集后 TOP 记录段行数: 0 现象:-F ... -T 生成的文件中 Top 进程段为空。 原因:本环境短时(-c 2)低负载采集窗口内,Top 段未落盘数据行。 解决:适当增大 -c(采集次数)或提高系统负载后再采集即可看到 TOP 行。

  5. 面板文本被「截断」(边框不完整、Hostname 少字符) 现象:交互帧右侧边框缺失、Hostname=mon-ubuntu220 末尾字符被截。 原因:nmon 按终端尺寸排版,终端过窄时右侧列会被裁掉。 解决:将终端调到 80×24 以上(尤其宽度)即可完整显示。

  6. 版本差异:Ubuntu 16n vs 其它发行版 16k 现象:Ubuntu 22.04 的 nmon 为 16n(deb 包 nmon 16n+debian-1),而 CentOS/EPEL 侧二进制报 16k。 原因:Debian/Ubuntu 与 EPEL 各自从上游源码(nigel nmon)跟进版本并独立打包,版本字母后缀不同步。 解决:功能一致;脚本中做版本比较时不要拿后缀字母做大小比较,以 nmon -V 输出为准。

七、命令与参数速查表

参数/命令含义实测说明/默认值
nmon启动交互式监控全屏单键切换;q 退出、H 帮助
nmon -V打印版本号本环境输出 nmon version 16n
nmon -f后台采集(spreadsheet 模式)后台运行,自动命名输出文件
nmon -s 2采样间隔秒数实测 -s 2 即每 2 秒采 1 次
nmon -c 3采集次数采满 3 次后自动退出
nmon -m /root输出目录本机文件落在 /root/mon-ubuntu2204_261006_0447.nmon
nmon -F <file>指定输出文件全路径覆盖默认命名,实测 /root/custom.nmon
nmon -T采集附带 Top 进程段短时实测 TOP 行数为 0
nmon -d <n>设置最大磁盘数头部 max_disks,...,set by -d option
c / m / d / nCPU / 内存 / 磁盘 / 网络面板单键开/关
t / r / k / jTop 进程 / 资源 / 内核负载 / 文件系统单键开/关
v / l详细模式 / CPU 长期平均v 显示告警阈值视图
- / +加快 / 放慢刷新刷新周期在主界面左上角显示
q退出交互模式采集模式采满 -c 次自动退出

八、卸载方式

按实际安装方式选择:

apt-get remove -y nmon

彻底清理(含配置文件):

apt-get purge -y nmon