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.sh,chmod +x,需要时跑一下看全貌。
下一篇:日志管理。