who 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于进程与系统命令族(见进程与系统命令族)。系统上现在有谁登录着?它列得清清楚楚。
who 列出当前所有登录会话:用户名、终端、登录时间、来源。比 whoami(见whoami)范围大——它看"所有人",whoami 只看"我自己"。
一、基本用法
bash
who
# alice tty1 2026-08-28 09:12
# bob pts/0 2026-08-28 10:30 (10.0.0.5)
# alice pts/1 2026-08-28 11:05 (10.0.0.5)每行一个会话(同一用户多个终端会多行)。
pts/0是远程 SSH,tty1是本地控制台,括号里是来源 IP。
二、扩展信息
bash
who -a # 全部:含系统事件、死会话、登录进程
who -b # 上次系统启动时间
who -u # 显示空闲时间(IDLE 列)
who -q # 只列用户名 + 用户总数
-b看启动时间(类似 uptime 的 up 时长反推);-u看各会话空闲多久(排查"挂着的会话");-q快速数人数。
三、who vs whoami vs w
bash
whoami # 当前 shell 的有效用户(见 [whoami](/linux/cmd/whoami.md))
who # 所有登录会话(多人)
w # who + 各自在干嘛 + 负载(见 [w](/linux/cmd/w.md))四、实战:踢掉闲置会话 / 审计
bash
who -u # 看谁 IDLE 很久(可能是忘退出的会话)
# 配合 pkill -t pts/1 可结束某终端会话(见 [pkill](/linux/cmd/pkill.md))安全审计、清理忘记退出的 SSH 会话时,
who -u先看谁空闲久,再决定是否结束其终端。也用于确认"到底有几个人连着"。
一句话总结
who = 当前登录会话列表(所有人):输出用户名/终端/登录时间/来源 IP;-b 看启动时间、-u 看空闲、-q 数人数;区别于 whoami(只答我是谁,见whoami)和 w(who+在干嘛+负载,见w)。审计/清理闲置 SSH 会话用 who -u。