一览 Linux 在线用户与服务器负载!w 命令实战完全指南

概述

在服务器监控与用户会话管理中,w 命令是能够即时掌握当前登录用户以及系统负载(Load Average)的核心工具。本文将从 w 命令的基础输出解读出发,逐步解析生产环境中常用的选项组合,以及它与 who、uptime 命令的区别。

1. 一览当前在线用户与系统负载:基础 w 命令执行

为了对比并确认与 w 命令首行输出相同的系统运行时间及负载信息,执行 uptime 命令。

uptime

w 命令用于一览当前登录到系统的用户、各用户正在执行的操作以及系统的负载状态。
输出的第一行显示当前时间、系统运行时间、登录用户数以及最近 1 分钟、5 分钟、15 分钟的平均负载(Load Average);从第二行开始显示每个用户的详细会话信息。
⚙️ [常用选项]

-h, --no-header : 不输出表头(顶部的负载信息和字段标题),仅显示用户列表。
-s, --short : 使用精简格式输出,省略登录时间、JCPU 和 PCPU 字段。
-f, --from : 切换(开启/关闭)显示登录来源 IP 地址或主机名的 FROM 字段。
-i, --ip-addr : 以 IP 地址格式代替主机名显示登录来源。
-o, --old-style : 使用旧式空白输出格式,空闲时间少于 1 分钟时显示为空白。

w

2. 隐藏表头与精简输出以编写监控脚本 (-h, -s)

w -h 命令会忽略顶部的系统运行时间摘要信息和各列的表头行,仅输出纯用户会话列表。
在脚本中解析在线用户数或特定用户信息时,常用于过滤掉不必要的表头行。
当前系统中没有登录用户,因此返回空结果。

w -h

w -s 命令将输出切换为摘要形式的精简(short)格式。
它省略了默认输出中包含的登录时间(LOGIN@)、JCPU 和 PCPU 字段,即使在终端窗口较窄的环境下,也能清晰查看会话、来源、空闲时间(IDLE)和当前执行命令(WHAT)等核心信息。

w -s

w -hs 命令结合了隐藏顶部表头摘要选项(-h)与精简输出选项(-s)。
在去除表头和多余字段的同时,直接获取核心会话数据行,非常适合用于基于 Shell 脚本的自动化监控。
由于当前没有在线用户,因此不显示任何内容并直接退出。

w -hs

3. 查询特定用户与控制 IP 地址显示 (-i, 指定用户)

为了进行特定用户过滤实践,使用 whoami 命令确认当前登录的账户名,并将其保存到 CURRENT_USER 变量中。

CURRENT_USER=$(whoami)

w "$CURRENT_USER" 命令仅筛选并输出指定用户账户的登录会话信息。
在在线用户较多的多用户环境中,有助于快速追踪特定用户的操作记录或空闲时间。

w “$CURRENT_USER”

w -i 命令将登录来源(FROM)固定以 IP 地址格式输出,而不是主机名。
这样可以避免 DNS 反向解析(Reverse DNS)引起的延迟,并在需要确认准确的远程登录 IP 地址时非常有用。

w -i

4. 生产环境对比分析:w vs who vs uptime 差异总结

uptime 命令以单行简洁地输出系统的当前时间、运行时间、当前登录用户数以及最近 1 分钟、5 分钟、15 分钟的平均负载(Load Average)。
当不需要查看各用户的详细会话信息,仅需快速检查服务器整体运行状态与负载指标时,该命令非常实用。

uptime

who -u 命令输出当前登录系统的用户列表、终端信息、登录时间、空闲时间(idle time)以及进程 ID(PID)。
当希望专注于识别登录会话,而无需查看系统负载或用户正在运行的命令信息时,适合使用该命令。
由于当前不存在在线会话,因此输出了空结果。

who -u

w 命令结合了 uptime 的系统负载摘要信息与 who 的在线用户会话列表,能够综合输出每个用户正在执行的操作(WHAT)乃至 CPU 使用情况。
顶部显示系统平均负载,下方显示会话列表表头,便于在同一界面中同时对比分析服务器负载与在线用户活动记录。

w

到此为止,我们学习了如何利用 w 命令一览并分析 Linux 在线用户与服务器负载状态。
在生产环境进行服务器巡检或故障排查时,建议将其作为日常基础检查工具灵活运用。