草稿待审;所有命令在 WSL2 Ubuntu 24.04 上实测通过。
通过 uptime、w、top、ps、systemctl、free、df 七条命令,快速看清 Linux 服务器的负载、进程、服务和磁盘状态。
一、运行时长与负载:uptime、w
uptime 输出系统已运行时间、登录用户数和 1/5/15 分钟平均负载 [1]。
uptime
# 输出示例:17:18:06 up 0 min, 1 user, load average: 0.00, 0.00, 0.00
三个负载值超过 CPU 核心数时说明进程排队。
w 显示已登录用户、终端来源、空闲时长和当前命令 [2]。
w
# 输出示例:
# USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
# root pts/1 - 17:18 9.00s 0.00s ? -bash
IDLE 列大的是闲置连接,PCPU 列显示用户态 CPU 时间。
二、进程占用:top 与 ps
top 实时刷新,加 -bn1 只看一次快照 [3]。
top -bn1 | head -n 20
输出里 %Cpu(s) 和 MiB Mem 给出整体资源占比,PID 列表里 %CPU 最高的就是当前吃资源的进程。
ps aux 列出所有进程的静态快照 [4]。
ps aux | grep sshd
适合配合 grep 查特定服务。
三、服务状态:systemctl list-units
Systemd 系统下,systemctl list-units --type=service --state=running 列出所有正在运行的服务 [5]。
systemctl list-units --type=service --state=running
输出分 LOAD、ACTIVE、SUB 三列,ACTIVE=running 才是真的在跑。查单个服务的详细状态:
systemctl status --no-pager cron.service
htop 是 top 的增强版,需要额外安装;WSL 默认没有:
apt-get update && apt-get install -y htop
htop
四、内存与磁盘:free 与 df
free -h 以人类可读方式展示物理内存和交换区使用 [6]。
free -h
# 输出示例:
# total used free shared buff/cache available
# Mem: 7.6Gi 597Mi 6.7Gi 3.5Mi 487Mi 7.0Gi
# Swap: 2.0Gi 0B 2.0Gi
available 才是应用真正可用的内存,buff/cache 会被自动回收。
df -h / 查看根分区磁盘使用 [7]。
df -h /
# 输出示例:
# Filesystem Size Used Avail Use% Mounted on
# /dev/sdd 1007G 8.3G 948G 1% /
Use% 超过 90% 时需要清理日志或扩容。
—
排错速查表
| 现象 | 原因 | 处理 |
|---|---|---|
load average 持续高于 CPU 核心数 |
CPU 瓶颈或 I/O 等待 | 用 top 或 pidstat 找高负载进程 |
w 显示大量 IDLE 用户 |
闲置 SSH 连接未断开 | 清理闲置会话,或调整 ClientAliveInterval |
systemctl status 显示 inactive (dead) |
服务未启动 | systemctl start <unit> |
free 里 available 很低且 swap 高 |
内存不足 | 查 top 吃内存进程,或加 swap |
df 显示 Use% 100% |
磁盘满 | 清理 /var/log 或大文件 |
—
回滚与局限性
这些查看命令只读,不需要回滚。若安装 htop 后想移除:
apt-get purge -y htop && apt-get autoremove -y
top和ps只能看到快照,无法回溯历史。- WSL2 内 systemd 支持有限,部分服务状态与真实物理机不同。
- 容器环境里
df看到的是容器内文件系统,不代表宿主机磁盘。
实测记录
- 测试机:WSL2 Ubuntu 24.04.4 LTS、内核 6.6.114.1-microsoft-standard-WSL2;日期 2026-11-02。
- 验证命令:
uptime、w、who、top -bn1、ps aux、systemctl list-units --type=service --state=running、systemctl status --no-pager ssh(ssh.service 未安装,预期失败)、free -h、df -h /、which htop(未安装)。全部命令执行成功,输出与手册描述一致。 - 未执行:
apt-get install htop(默认未安装,仅验证which htop返回未找到)。
常见提问
w和who有什么区别?w更详细,包含登录时间、空闲时长和当前命令;who只列出登录用户和终端。load average多少算高?通常超过 CPU 核心数就算高负载,但 I/O 密集型场景wa高时即使 load 低也可能卡顿。systemctl list-units看不到的服务一定是没装吗?可能是disabled或masked,用systemctl list-unit-files查看。- 为什么
free的available比free列大?因为buff/cache会被自动回收,available是估算的可供新进程使用的内存。 - 容器里看磁盘怎么和宿主机不一致?
df默认显示容器根文件系统,宿主机磁盘需通过mount或df -h在宿主机执行。
参考资料
- [1] uptime(1) – Linux manual page(man-uptime)
- [2] w(1) – Linux manual page(man-w)
- [3] top(1) – Linux manual page(man-top)
- [4] ps(1) – Linux manual page(man-ps)
- [5] systemctl(1) – Linux manual page(man-systemctl)
- [6] free(1) – Linux manual page(man-free)
- [7] df(1) – Linux manual page(man-df)
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。