5 个核心监控命令

1. free — 内存

free -h
#                total        used        free      shared  buff/cache   available
# Mem:           7.7Gi       1.2Gi       5.0Gi        15Mi       1.5Gi       6.2Gi
# Swap:          2.0Gi          0B       2.0Gi

看哪些列:

  • used:真正在用的
  • available:真正能给新程序的(比 free 更准确
  • buff/cache:被缓存占用,需要时会自动释放

看到 free 列很小不要慌——buff/cache 会让出来。available

2. df — 磁盘空间

df -h
# Filesystem      Size  Used Avail Use% Mounted on
# /dev/sda1        30G   12G   17G  42% /
# tmpfs           1.6G  1.4M  1.6G   1% /run
# /dev/sda2       100G   45G   51G  47% /data
  • Use% > 85% 该清理
  • Use% > 95% 紧急

3. du — 目录占用

du -sh folder              # 单目录总大小
du -sh /var/log/*          # 各子目录大小
du -sh /var/log/* | sort -h  # 排序
du -h --max-depth=1 /var   # 只看一级深度

找大目录的标准套路:

sudo du -h --max-depth=1 / 2>/dev/null | sort -h | tail

4. uptime — 负载

uptime
# 10:23:45 up 23 days, 4:12, 2 users, load average: 0.45, 0.52, 0.61
#                                                     1分钟  5分钟  15分钟

load average 三个数字 = 过去 1/5/15 分钟的平均"等待运行的进程数"。

判断:

  • 单核机器 load 持续 > 1 → 跑满了
  • 8 核机器 load 持续 > 8 → 跑满了

短期高、长期低 → 突发,没事;持续高 → 真满了,要扩容或优化。

5. vmstat — 综合

vmstat 1 5           # 每 1 秒采样一次,采 5 次
# procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
#  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
#  0  0      0 5000000 100000 1500000  0    0    20    50  100  200  5  2 92  1  0

看哪些列:

  • r:等运行的进程数(> CPU 核数 = 跑不过来)
  • b:被阻塞的进程数
  • wa(CPU wait):CPU 等 IO 的占比(> 20% = 磁盘瓶颈)
  • us / sy:用户态 / 内核态 CPU
  • id:空闲 CPU
  • si / so(swap in/out):> 0 = 在用 swap,系统已经累了

其他常用

CPU 详情

nproc                   # CPU 核数
lscpu                   # CPU 完整信息(架构 / 频率 / 缓存)
cat /proc/cpuinfo       # 同上,更详细
mpstat 1 5              # 各核 CPU 占用(需要 sysstat 包)

内存详情

cat /proc/meminfo | head -10

IO 实时

iostat -x 1             # 各磁盘 IO(需要 sysstat 包)
iotop                   # 按进程看 IO(需要装)

网络流量

nload                   # 实时网卡流量(需要装)
iftop                   # 按连接看流量(需要装)

一键监控脚本

#!/bin/bash
echo "=== Uptime ==="
uptime

echo ""
echo "=== Memory ==="
free -h

echo ""
echo "=== Disk ==="
df -h | grep -v tmpfs

echo ""
echo "=== Top 5 processes by CPU ==="
ps aux --sort=-%cpu | head -6

echo ""
echo "=== Top 5 processes by Memory ==="
ps aux --sort=-%mem | head -6

保存为 ~/sysinfo.shchmod +x,需要时跑一下看全貌。

下一篇:日志管理。