w命令是linux中实时查看登录用户及进程的轻量运维工具,输出含系统概览和用户详情,字段包括user、tty、from、login@、idle、jcpu、pcpu、what,支持-h、-u、-s等选项及用户名过滤,常与last、ps、watch等命令联动排查问题。

w 命令是 Linux 系统中一个轻量但实用的运维工具,用于实时查看当前登录系统的用户、他们所在的终端、登录时间、空闲时长、正在运行的进程命令行等信息。它本质是 who 和 ps 的组合增强版,无需额外安装,开箱即用。
理解 w 命令输出字段含义
执行 w 后,标准输出通常包含两部分:第一行是系统概览(uptime、用户数、平均负载),后续每行代表一个活跃用户。关键列说明如下:
- USER:用户名
-
Tty:登录终端(如
tty1、pts/0表示 SSH 会话) -
FROM:远程登录来源 IP 或主机名(本地登录显示
:0或-) - LOGIN@:登录时间(精确到分钟)
-
IDLE:该用户终端最近一次操作距今的空闲时间(如
12min、0.00s) - JCPU:该用户所有进程累计使用的 CPU 时间(不含子进程)
- PCPU:当前正在运行的命令所占 CPU 时间(通常是最后一列命令)
-
WHAT:用户当前正在执行的命令(含参数,如
bash、vim /etc/nginx.conf)
常用实用技巧与选项
默认 w 显示所有用户,但可通过选项聚焦关键信息:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 加
-h隐藏表头,方便脚本解析(如w -h | awk '{print $1,$5}'提取用户名和空闲时间) - 加
-u取消 JCPU/PCPU 计算(避免因权限或统计延迟导致字段为空) - 加
-s精简模式:隐藏 LOGIN@、IDLE、JCPU、PCPU 列,只留 USER、TTY、FROM、WHAT,适合快速扫视 - 指定用户名过滤:如
w alice仅显示用户 alice 的行(注意不是模糊匹配,必须全名)
结合其他命令提升排查效率
单独用 w 能看“谁在干什么”,但深入分析需联动:
- 发现异常 IP 登录?立刻用
last -n 20 | grep "异常IP"查登录历史 - 看到某用户长时间运行高耗时命令(如
find / -name "*.log")?用ps -u username -o pid,ppid,%cpu,%mem,cmd --sort=-%cpu查具体进程资源占用 - 想持续观察变化?搭配
watch -n 2 w每 2 秒刷新一次(Ctrl+C 退出) - 检查是否有人未退出就关闭了 SSH 客户端(留下僵死会话)?关注 IDLE 时间极长(如几小时)且 WHAT 列为
bash或-bash的行,再用ps -t pts/X确认会话状态
注意事项与常见误区
w 的数据来自 /var/run/utmp(记录登录事件)和 /proc(获取进程信息),因此:
- 它反映的是“当前内核感知到的活跃会话”,非实时毫秒级——一般延迟在 1 秒内,对运维判断足够
- 若用户通过
su -切换身份,w显示的仍是原始登录用户,WHAT 列可能显示su -,需结合ps进一步确认子 shell 状态 - 某些容器环境或精简系统(如 Alpine)可能默认不启用 utmp 支持,此时
w输出为空或报错,可改用who+ps aux --forest组合替代 - 不要依赖
w判断“用户是否还在操作”——IDLE 时间仅基于终端输入事件,后台运行curl或rsync不会重置该计时器










