Linux 的 who 命令

Linux 的 who 命令是一个简单但非常实用的系统工具,用于显示当前登录到系统的用户信息。它可以帮助系统管理员快速了解谁正在使用系统、他们从哪里登录以及登录了多久。

1. 命令基本用法

直接在终端中输入 who 命令,不带任何参数,会显示当前所有登录用户的基本信息:

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

显示系统最后一次启动(引导)的时间。

who -b

输出示例:

system boot  2026-05-21 08:30

2.2 who -r

显示当前的运行级别(runlevel)。

who -r

输出示例:

run-level 5  2026-05-21 08:30

2.3 who -a

显示所有可用信息,相当于同时使用多个参数,信息最全。

who -a

输出会包含登录用户、系统启动时间、运行级别、关机计划、死进程等信息。

2.4 who -H

在输出结果上方显示列标题,使输出更易读。

who -H

输出示例:

NAME     LINE         TIME             COMMENT
username tty1         2026-05-21 14:10 (:0)

2.5 who -q

“快速”模式,只显示登录用户的用户名和总用户数,不显示其他详细信息。

who -q

输出示例:

username alice bob
# users=3

2.6 who -uwho --idle

显示用户的空闲时间(idle time)。空闲时间指用户最后一次在终端上活动到现在的时间。

who -u

输出中会多出一列 .old. 表示当前终端正在活动(空闲时间小于1分钟),old 表示空闲时间超过24小时,数字如 10:30 则表示空闲了10小时30分钟。

3. 实际应用场景

3.1 系统管理员监控

管理员可以定期使用 who 命令检查是否有异常或未授权的登录。

3.2 排查问题

  • 当系统响应变慢时,可以用 who -u 查看是否有用户长时间空闲但未注销,占用着资源。
  • 使用 who -b 可以确认系统是否在预期时间外重启过。

3.3 编写脚本

who 命令的输出格式规整,易于被其他命令(如 awk, cut) 或脚本处理,常用于自动化任务。
例如,获取所有登录用户的用户名列表:

who | awk '{print $1}' | sort | uniq

4. 与其他命令的关系

  • w 命令:是 who 命令的增强版,除了显示登录用户,还会显示他们正在执行的进程以及系统平均负载。
  • last 命令:显示用户的历史登录记录,包括登录、注销以及系统开关机事件。
  • users 命令:仅显示当前登录的所有用户名,一行输出,用空格分隔。

5. 总结

who 命令是 Linux 系统管理的基础工具之一,它提供了快速查看登录状态的入口。虽然功能简单,但通过不同的参数组合,可以满足日常监控、问题排查和脚本编写的多种需求。掌握 who 及其相关命令(w, last),是成为一名高效 Linux 用户或管理员的第一步。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容