系统监控 #
系统信息 #
uptime - 系统运行时间 #
bash
# 查看系统运行时间
$ uptime
10:00:00 up 30 days, 2:15, 3 users, load average: 0.05, 0.10, 0.15
# 输出说明
# 10:00:00 当前时间
# up 30 days 运行时间
# 3 users 用户数
# load average 负载均衡(1分钟、5分钟、15分钟)
# 只显示运行时间
$ uptime -p
up 1 month, 2 hours, 15 minutes
# 显示启动时间
$ uptime -s
2026-03-12 07:45:00
hostname - 主机名 #
bash
# 查看主机名
$ hostname
server01
# 查看完整域名
$ hostname -f
server01.example.com
# 查看 IP 地址
$ hostname -I
192.168.1.100 172.17.0.1
# 修改主机名
$ sudo hostnamectl set-hostname new-hostname
uname - 系统信息 #
bash
# 查看内核信息
$ uname -a
Linux server01 5.4.0-80-generic #90-Ubuntu SMP Fri Jul 9 22:49:44 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
# 只显示内核名称
$ uname -s
Linux
# 只显示内核版本
$ uname -r
5.4.0-80-generic
# 只显示硬件架构
$ uname -m
x86_64
# 显示所有信息
$ uname -a
内存监控 #
free - 内存使用 #
bash
# 查看内存使用
$ free
total used free shared buff/cache available
Mem: 8000000 3000000 1000000 500000 4000000 4000000
Swap: 2000000 0 2000000
# 人类可读格式
$ free -h
total used free shared buff/cache available
Mem: 7.6Gi 2.9Gi 1.0Gi 500Mi 3.8Gi 3.8Gi
Swap: 1.9Gi 0B 1.9Gi
# 以 MB 为单位
$ free -m
# 以 GB 为单位
$ free -g
# 显示总计
$ free -h -t
# 定期刷新
$ free -h -s 5
内存字段说明 #
text
┌─────────────────────────────────────────────────────────────┐
│ free 输出字段 │
├─────────────────────────────────────────────────────────────┤
│ │
│ total 总内存 │
│ used 已使用内存 │
│ free 空闲内存 │
│ shared 共享内存 │
│ buff/cache 缓冲区和缓存 │
│ available 可用内存(实际可用) │
│ │
│ 注意: │
│ - available 是真正可用的内存 │
│ - buff/cache 可以被回收使用 │
│ - free 不包括 buff/cache │
│ │
└─────────────────────────────────────────────────────────────┘
CPU 监控 #
lscpu - CPU 信息 #
bash
# 查看 CPU 信息
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 8
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
Model name: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz
CPU MHz: 3200.000
Cache L1d: 128 KiB
Cache L1i: 128 KiB
Cache L2: 1 MiB
Cache L3: 9 MiB
# 查看 CPU 核心数
$ nproc
8
# 查看 CPU 详细信息
$ cat /proc/cpuinfo
mpstat - CPU 统计 #
bash
# 安装
$ sudo apt install sysstat
# 查看 CPU 统计
$ mpstat
Linux 5.4.0-80-generic (server01) 04/11/2026 _x86_64_ (8 CPU)
10:00:00 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:00:01 AM all 5.00 0.00 2.00 0.50 0.00 0.50 0.00 0.00 0.00 92.00
# 查看每个 CPU 核心
$ mpstat -P ALL
# 定期刷新
$ mpstat 5 3 # 每 5 秒刷新,共 3 次
I/O 监控 #
iostat - I/O 统计 #
bash
# 查看 I/O 统计
$ iostat
Linux 5.4.0-80-generic (server01) 04/11/2026 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
5.00 0.00 2.50 0.50 0.00 92.00
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 5.00 100.00 200.00 1000000 2000000
# 显示扩展信息
$ iostat -x
# 只显示磁盘
$ iostat -d
# 只显示 CPU
$ iostat -c
# 指定设备
$ iostat sda
# 定期刷新
$ iostat 5 3
# 人类可读格式
$ iostat -h
iotop - I/O 进程监控 #
bash
# 安装
$ sudo apt install iotop
# 启动 iotop
$ sudo iotop
# 只显示有 I/O 的进程
$ sudo iotop -o
# 只显示进程(不显示线程)
$ sudo iotop -P
# 批处理模式
$ sudo iotop -b -n 3
综合监控 #
vmstat - 虚拟内存统计 #
bash
# 查看虚拟内存统计
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1000000 500000 3500000 0 0 10 20 100 200 5 2 92 1 0
# 定期刷新
$ vmstat 5
# 显示内存详细信息
$ vmstat -s
# 显示磁盘统计
$ vmstat -d
# 显示事件计数
$ vmstat -s
vmstat 字段说明 #
text
┌─────────────────────────────────────────────────────────────┐
│ vmstat 输出字段 │
├─────────────────────────────────────────────────────────────┤
│ │
│ procs │
│ r 等待运行的进程数 │
│ b 不可中断睡眠的进程数 │
│ │
│ memory │
│ swpd 虚拟内存使用量 │
│ free 空闲内存 │
│ buff 缓冲区内存 │
│ cache 缓存内存 │
│ │
│ swap │
│ si 从磁盘换入的内存(KB/s) │
│ so 换出到磁盘的内存(KB/s) │
│ │
│ io │
│ bi 从块设备读入的块数 │
│ bo 写入块设备的块数 │
│ │
│ system │
│ in 每秒中断数 │
│ cs 每秒上下文切换数 │
│ │
│ cpu │
│ us 用户空间 CPU 时间 │
│ sy 内核空间 CPU 时间 │
│ id 空闲 CPU 时间 │
│ wa 等待 I/O 的 CPU 时间 │
│ st 被虚拟化偷走的时间 │
│ │
└─────────────────────────────────────────────────────────────┘
sar - 系统活动报告 #
bash
# 安装
$ sudo apt install sysstat
# 启用数据收集
$ sudo systemctl enable sysstat
$ sudo systemctl start sysstat
# 查看 CPU 使用
$ sar -u
# 查看内存使用
$ sar -r
# 查看 I/O 统计
$ sar -b
# 查看网络统计
$ sar -n DEV
# 查看历史数据
$ sar -u -f /var/log/sysstat/sa11
# 定期刷新
$ sar 5 3
# 查看所有统计
$ sar -A
网络监控 #
netstat - 网络统计 #
bash
# 查看所有连接
$ netstat -a
# 只显示 TCP 连接
$ netstat -t
# 只显示 UDP 连接
$ netstat -u
# 显示监听端口
$ netstat -l
# 显示进程信息
$ netstat -p
# 显示数字地址
$ netstat -n
# 组合使用
$ netstat -tlnp # TCP 监听端口和进程
$ netstat -tuln # TCP 和 UDP 监听端口
$ netstat -anp # 所有连接和进程
# 查看路由表
$ netstat -r
# 查看网络统计
$ netstat -i
$ netstat -s
ss - socket 统计 #
bash
# 查看所有 socket
$ ss -a
# 只显示 TCP
$ ss -t
# 只显示 UDP
$ ss -u
# 显示监听
$ ss -l
# 显示进程
$ ss -p
# 显示数字
$ ss -n
# 组合使用
$ ss -tlnp # TCP 监听端口和进程
$ ss -tuln # TCP 和 UDP 监听端口
# 查看连接状态
$ ss -s
# 查看特定端口
$ ss -tlnp | grep :80
日志监控 #
dmesg - 内核消息 #
bash
# 查看内核消息
$ dmesg
# 实时查看
$ dmesg -w
# 显示时间戳
$ dmesg -T
# 过滤特定级别
$ dmesg -l err
$ dmesg -l warn
# 清除缓冲区
$ sudo dmesg -c
journalctl - systemd 日志 #
bash
# 查看所有日志
$ journalctl
# 实时查看
$ journalctl -f
# 查看特定服务
$ journalctl -u nginx
# 查看特定时间
$ journalctl --since "2026-04-11 10:00:00"
$ journalctl --since "1 hour ago"
# 查看内核消息
$ journalctl -k
# 查看优先级
$ journalctl -p err
# 限制行数
$ journalctl -n 100
# 显示详细信息
$ journalctl -o verbose
小结 #
通过本节学习,你应该掌握:
- 系统信息:uptime、hostname、uname
- 内存监控:free
- CPU 监控:lscpu、mpstat
- I/O 监控:iostat、iotop
- 综合监控:vmstat、sar
- 网络监控:netstat、ss
- 日志监控:dmesg、journalctl
下一步,我们将学习网络命令。
最后更新:2026-04-11