Linux 的 who 命令是一个简单但非常实用的系统工具,用于显示当前登录到系统的用户信息。它可以帮助系统管理员快速了解谁正在使用系统、他们从哪里登录以及登录了多久。
1. 命令基本用法
直接在终端中输入 who 命令,不带任何参数,会显示当前所有登录用户的基本信息:
典型的输出格式如下:
username tty1 2026-05-21 14:10 (:0)
alice pts/0 2026-05-21 13:45 (192.168.1.100)
bob pts/1 2026-05-21 14:05 (192.168.1.101)
输出各列的含义:
- username: 登录用户的用户名。
- tty/pts : 用户登录的终端设备。
tty通常指物理终端或图形界面终端,pts(pseudo-terminal slave) 指伪终端,常用于 SSH 或终端模拟器。 - date & time: 用户登录的日期和时间。
- remote host : 用户登录的来源。对于本地图形界面登录,通常显示
(:0);对于远程 SSH 登录,则显示 IP 地址或主机名。
2. 常用参数详解
who 命令提供多个参数来获取更详细或特定格式的信息。
2.1 who -b
显示系统最后一次启动(引导)的时间。
bash
who -b
输出示例:
system boot 2026-05-21 08:30
2.2 who -r
显示当前的运行级别(runlevel)。
bash
who -r
输出示例:
run-level 5 2026-05-21 08:30
2.3 who -a
显示所有可用信息,相当于同时使用多个参数,信息最全。
bash
who -a
输出会包含登录用户、系统启动时间、运行级别、关机计划、死进程等信息。
2.4 who -H
在输出结果上方显示列标题,使输出更易读。
bash
who -H
输出示例:
NAME LINE TIME COMMENT
username tty1 2026-05-21 14:10 (:0)
2.5 who -q
"快速"模式,只显示登录用户的用户名和总用户数,不显示其他详细信息。
bash
who -q
输出示例:
username alice bob
# users=3
2.6 who -u 或 who --idle
显示用户的空闲时间(idle time)。空闲时间指用户最后一次在终端上活动到现在的时间。
bash
who -u
输出中会多出一列 . 或 old,. 表示当前终端正在活动(空闲时间小于1分钟),old 表示空闲时间超过24小时,数字如 10:30 则表示空闲了10小时30分钟。
3. 实际应用场景
3.1 系统管理员监控
管理员可以定期使用 who 命令检查是否有异常或未授权的登录。
- 结合
grep过滤特定用户:who | grep username - 统计登录用户总数:
who | wc -l
3.2 排查问题
3.3 编写脚本
who 命令的输出格式规整,易于被其他命令(如 awk, cut) 或脚本处理,常用于自动化任务。
例如,获取所有登录用户的用户名列表:
bash
who | awk '{print $1}' | sort | uniq
4. 与其他命令的关系
w命令 :是who命令的增强版,除了显示登录用户,还会显示他们正在执行的进程以及系统平均负载。last命令:显示用户的历史登录记录,包括登录、注销以及系统开关机事件。users命令:仅显示当前登录的所有用户名,一行输出,用空格分隔。
5. 总结
who 命令是 Linux 系统管理的基础工具之一,它提供了快速查看登录状态的入口。虽然功能简单,但通过不同的参数组合,可以满足日常监控、问题排查和脚本编写的多种需求。掌握 who 及其相关命令(w, last),是成为一名高效 Linux 用户或管理员的第一步。