Linux 系统监控:uptime、watch、top
1.uptime —— 系统负载快速查看
功能:显示系统运行时间、当前登录用户数、系统平均负载。
$ uptime 10:30:15 up 15 days, 3:45, 2 users, load average: 0.08, 0.03, 0.01
字段解析
|
字段 |
示例值 |
说明 |
|
当前时间 |
10:30:15 |
系统当前时间 |
|
运行时长 |
up 15 days, 3:45 |
系统已运行 15 天 3 小时 45 分钟 |
|
登录用户数 |
2 users |
当前登录的终端用户数(同一用户多次登录算多个) |
|
负载平均值 |
load average: 0.08, 0.03, 0.01 |
过去 1 分钟、5 分钟、15 分钟 的平均负载 |
负载含义速查
|
负载值 vs CPU 核心数 |
含义 |
|
< 1.0 × 核心数 |
系统空闲,资源充足 |
|
= 1.0 × 核心数 |
刚好满载,无等待 |
|
> 1.0 × 核心数 |
过载,有进程在等待 CPU |
注意:4 核 CPU 负载 4.0 = 满载;负载 2.0 在单核系统是过载,在 4 核系统是空闲。一般负载超过cpu核数的80%的时候就需要引起警觉判断服务器情况。稳定运行的情况cpu的1-15分钟的负载应该是相对来说比较接近的
快速判断技巧
uptime -p # 更友好的格式:up 2 weeks, 1 day, 3 hours
uptime -s # 显示系统启动时间(since)
2.watch —— 周期性执行命令
功能:定时重复执行指定命令,全屏显示输出(实时监控变化)。
基础语法: watch [选项] '命令'
常用选项:
|
选项 |
说明 |
|
-n |
指定执行间隔(默认 2 秒) |
|
-d |
高亮显示每次变化的差异 |
|
-t |
不显示标题栏(时间、命令、间隔信息) |
|
-g |
退出命令输出变化时退出(检测变化) |
|
-c |
解析 ANSI 颜色转义序列 |
实用示例:
# 每秒查看系统负载变化
watch -n 1 uptime
# 监控进程列表(高亮变化)
watch -d 'ps aux | grep nginx'
# 监控磁盘使用率(无标题栏)
watch -t df -h
# 监控网络连接数变化
watch 'netstat -an | grep ESTABLISHED | wc -l'
# 监控特定端口占用(检测变化时自动退出)
watch -g 'netstat -tunlp | grep 8080'
# 查看内存使用(带颜色)
watch -c 'free -h && echo -e "\033[32m------\033[0m"'
退出方式
- Ctrl + C 停止监控
- 使用 -g 选项时,输出变化自动退出
高级技巧
# 监控多个命令(用分号或管道组合)
watch 'date; echo "---"; uptime; echo "---"; free -h'
# 自定义间隔 0.5 秒(需要高精度)
watch -n 0.5 'cat /proc/loadavg'
# 配合 grep 高亮关键字(需要 --color)
watch -d 'ps aux | grep --color=always mongod'
3.top —— 实时进程监控
功能:动态显示系统进程资源占用(CPU、内存),类似windows里面的任务管理器。
启动方式
top # 进入交互界面
top -u username # 只显示指定用户的进程
top -p PID1,PID2 # 只显示指定 PID 的进程
top -b -n 1 > top.txt # 批处理模式,输出 1 次到文件
界面分区解析
第1行(统计区)
top - 10:30:15 up 15 days, 3:45, 2 users, load average: 0.08, 0.03, 0.01
同 uptime 输出
第2行(进程统计)
Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombie
|
状态 |
含义 |
|
total |
总进程数 |
|
running |
正在运行 |
|
sleeping |
休眠中 |
|
stopped |
被暂停 |
|
zombie |
僵尸进程(需关注) |
第3行(CPU 状态)
%Cpu(s): 2.5 us, 1.2 sy, 0.0 ni, 96.0 id, 0.1 wa, 0.0 hi, 0.2 si, 0.0 st
|
缩写 |
全称 |
含义 |
|
us |
user |
用户空间占用 |
|
sy |
system |
内核空间占用 |
|
ni |
nice |
调整优先级进程占用 |
|
id |
idle |
空闲 CPU |
|
wa |
iowait |
等待 I/O 完成 |
|
hi |
hardware interrupt |
硬中断 |
|
si |
software interrupt |
软中断 |
|
st |
steal time |
虚拟机被宿主机偷走的时间 |
第4-5行(内存状态)
KiB Mem : 16385820 total, 2045232 free, 11234567 used, 3106021 buff/cache KiB Swap: 8388608 total, 8388608 free, 0 used, 7123456 avail Mem
|
字段 |
Mem 含义 |
Swap 含义 |
|
total |
物理内存总量 |
交换分区总量 |
|
free |
完全空闲内存 |
空闲交换空间 |
|
used |
已使用内存 |
已使用交换空间 |
|
buff/cache |
缓存和缓冲区 |
- |
|
avail Mem |
可用于启动新应用的估算内存 |
- |
第6行之后(进程列表)
|
列名 |
含义 |
|
PID |
进程 ID |
|
USER |
启动用户 |
|
PR/NI |
优先级/nice 值 |
|
VIRT |
虚拟内存大小 |
|
RES |
常驻物理内存 |
|
SHR |
共享内存 |
|
S |
进程状态(R运行 S睡眠 D不可中断 Z僵尸 T停止) |
|
%CPU |
CPU 使用率 |
|
%MEM |
内存使用率 |
|
TIME+ |
累计 CPU 时间 |
|
COMMAND |
命令名 |
top 交互命令(运行中按)
|
按键 |
功能 |
|
1 |
展开/折叠每个 CPU 核心使用率 |
|
P |
按 CPU 使用率排序(大写) |
|
M |
按内存使用率排序 |
|
N |
按 PID 排序 |
|
T |
按累计时间排序 |
|
R |
反转排序 |
|
k |
终止进程(输入 PID 和信号) |
|
r |
调整进程优先级(renice) |
|
u |
只显示特定用户 |
|
f |
选择显示哪些列 |
|
d |
修改刷新间隔 |
|
W |
保存当前配置 |
|
q |
退出 |
常用变体
htop # 更友好的 top(需安装)
top -b -n 1 | head # 单次输出,用于脚本
快速对比
|
命令 |
主要用途 |
更新方式 |
适合场景 |
|
uptime |
快速看负载趋势 |
静态输出 |
登录系统第一眼检查 |
|
watch |
周期性执行任意命令 |
全屏刷新 |
监控特定指标变化(可定制) |
|
top |
深度分析进程资源 |
实时动态 |
排查 CPU/内存占用高的问题 |
典型工作流
# 1. 登录后看负载
uptime
# 2. 负载高,用 top 找具体进程
top -c # -c 显示完整命令
# 3. 监控特定指标变化
watch -n 1 'ps aux | grep 进程名 | wc -l'
watch -d -n 2 "netstat -an | grep :8080 | grep ESTABLISHED"
小技巧备忘
# uptime + watch 组合:实时监控负载变化
watch -n 1 uptime
# top 只关注特定进程
top -p $(pgrep -d',' nginx)
# 查看 1 秒内的 CPU 峰值
top -b -n 2 -d 1 | grep 'Cpu(s)' | tail -1
# 监控进程数变化
watch 'ps aux | wc -l'
总结
本文主要记录Linux 系统监控:uptime、watch、top三个命令的学习笔记。
写在最后
关于本文
作为技术成长路上的记录,文中难免存在理解不深或表述不当之处,欢迎各位前辈指正。
更多推荐




所有评论(0)