Ubuntu 22.04 nmon 安装与命令参数详解
在 Ubuntu 22.04 上从零安装 nmon 16n(在线与离线两种方式),并逐条实测全部命令行参数、交互式监控面板与真实输出,附版本差异与命令速查表
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 全面性能监控工具。它的核心特点有二:
- 单屏交互式监控:在一个终端界面里用单键(c/m/d/n/t/r/k/j/v 等)开/关不同维度的实时面板,适合在服务器现场快速巡检 CPU、内存、磁盘 I/O、网络、进程、内核负载、文件系统等指标。
- 后台无交互采集:用
-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。常用快捷键含义见下表:
| 键 | 面板 | 键 | 面板 |
|---|---|---|---|
c | CPU 使用率 | m | 内存与交换 |
d | 磁盘 I/O | n | 网络 I/O |
t | Top 进程 | r | 资源/内核信息 |
k | 内核与负载 | j | 文件系统 |
v | 详细模式 | q | 退出 |
l | CPU 长期平均 | - / + | 加快 / 放慢刷新 |
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指定次数后进程自动退出,无需手工干预。
六、常见问题与真实行为
-
Uptime has overflowed(k 面板) 现象:内核与负载面板末行显示Uptime has overflowed。 原因:新内核(6.8)改变了/proc/stat中某些计数(如 idle ticks)的位宽或含义,nmon 16n 的 uptime 换算逻辑无法正确处理,判为「溢出」。 解决:属显示性告警,不影响 CPU 使用率、负载、内存等其它指标的正常采集;短期可忽略,长期建议升级到对内核 6.x 兼容性更好的 nmon 版本。 -
磁盘面板
Warning:contains duplicates现象:磁盘 I/O 面板标题末尾提示Warning:contains duplicates。 原因:nmon 直接遍历/proc/diskstats,整盘与分区(如sda与sda1)会重复计入总量。 解决:属正常提示;如需精确统计,可用-d限制磁盘数量或人工选择具体盘符读数。 -
文件系统面板的
overlay与not a real filesystem现象:根挂载/类型显示overlay,其余/proc /dev /sys等显示not a real filesystem。 原因:本测试环境根文件系统为 overlay 挂载类型;/proc /dev /sys等是内核虚拟文件系统,无真实容量,nmon 故标注not a real filesystem。 解决:属如实展示,无需处理。 -
-T采集后TOP 记录段行数: 0现象:-F ... -T生成的文件中 Top 进程段为空。 原因:本环境短时(-c 2)低负载采集窗口内,Top 段未落盘数据行。 解决:适当增大-c(采集次数)或提高系统负载后再采集即可看到 TOP 行。 -
面板文本被「截断」(边框不完整、Hostname 少字符) 现象:交互帧右侧边框缺失、
Hostname=mon-ubuntu220末尾字符被截。 原因:nmon 按终端尺寸排版,终端过窄时右侧列会被裁掉。 解决:将终端调到 80×24 以上(尤其宽度)即可完整显示。 -
版本差异:Ubuntu
16nvs 其它发行版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 / n | CPU / 内存 / 磁盘 / 网络面板 | 单键开/关 |
t / r / k / j | Top 进程 / 资源 / 内核负载 / 文件系统 | 单键开/关 |
v / l | 详细模式 / CPU 长期平均 | v 显示告警阈值视图 |
- / + | 加快 / 放慢刷新 | 刷新周期在主界面左上角显示 |
q | 退出交互模式 | 采集模式采满 -c 次自动退出 |
八、卸载方式
按实际安装方式选择:
apt-get remove -y nmon
彻底清理(含配置文件):
apt-get purge -y nmon