系统监控 #

系统信息 #

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

小结 #

通过本节学习,你应该掌握:

  1. 系统信息:uptime、hostname、uname
  2. 内存监控:free
  3. CPU 监控:lscpu、mpstat
  4. I/O 监控:iostat、iotop
  5. 综合监控:vmstat、sar
  6. 网络监控:netstat、ss
  7. 日志监控:dmesg、journalctl

下一步,我们将学习网络命令。

最后更新:2026-04-11