首页 > Sysadmin > 正文

Linux 服务器运行状态查看全指南

huyuanwen 2026-11-02 Sysadmin

草稿待审;所有命令在 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 在宿主机执行。

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。