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三个命令的学习笔记。

 写在最后

关于本文
作为技术成长路上的记录,文中难免存在理解不深或表述不当之处,欢迎各位前辈指正。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐