linux-command 之 who 命令详解:查看当前登录用户与登录历史
文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载who 是 GNU coreutils 提供的基础系统管理命令用于显示当前所有登录用户的信息包括登录用户名、终端、登录时间以及来源主机或 X display。本文以 linux-command 开源仓库中的 who 命令文档 为主体逐项拆解其语法、选项、参数、返回值与实战用例并结合仓库内的相关命令文档如 w、whoami、users、last说明它在登录信息查询工具链中的定位。读完本文你将能够熟练使用 who 完成登录状态监控、历史登录审计以及脚本化的会话统计。命令概要who 的完整语法如下文档位于 command/who.mdwho [OPTION]... [file] [am i]要点[OPTION]...零个或多个选项控制输出内容与格式[file]可选参数指定要读取的登录记录文件用于替代默认文件[am i]特殊参数组合仅显示运行该命令的用户自身的信息。该命令属于 GNU coreutils 包在 README.md 的系统管理分类中与w、whoami、users、last、uptime等命令并列共同构成 Linux 用户会话管理的基础工具集。主要用途按照原文档的说明who 有两个核心用途未指定任何非选项参数时为每个当前登录用户按固定字段顺序打印信息依次为登录用户名称终端信息如pts/0登录时间如2013-08-19 15:04远程主机或 X display如(192.168.0.134)。执行who am i时只显示运行该命令的用户自身的信息而不再列出系统上所有会话。从输出结构可以看出who 直接面向登录会话记录utmp工作其输出字段与登录记录中保存的属性一一对应因此它是排查谁在登录、从哪里登录、登录了多久这类问题的最直接命令。选项详解who 提供的全部选项及其含义如下表所示完整继承自 command/who.md选项长选项说明-a--all等价于调用-b -d --login -p -r -t -T -u一次输出全部可用信息-b--boot上次系统启动的时间-d--dead打印 dead已死状态的进程-H--heading打印列标题行-l--login打印系统登录进程--lookup尝试通过 DNS 规范主机名-m仅显示和标准输入关联的主机名和用户-p--process打印由 init 生成的活动进程-q--count列出所有已登录用户的名称和数量-r--runlevel打印当前运行级别-s--short仅打印名称、行和时间默认行为-t--time打印上次系统时钟更改-T、-w--mesg、--message、--writable将、-、?中的一个作为用户的消息状态添加到用户名称后面-u--users列出登录的用户--help显示帮助信息并退出--version显示版本信息并退出关于-T选项的消息状态标记-T等价于-w会在用户名称后面附加一个消息状态字符含义如下允许写入信息该终端开放可被write等命令发送消息-禁止写入信息终端关闭了消息接收?不能查找到终端设备无法判断状态。该标记与 mesg 命令控制的终端写入权限直接相关运维排查为什么 write 命令发不出去消息时可先用who -T检查目标用户的终端状态。关于-a的组合语义-a, --all是高频组合选项它等价于一次启用-b -d --login -p -r -t -T -u六个选项能在单次输出中同时呈现系统启动时间、dead 进程、登录进程、活动进程、运行级别、时钟更改、消息状态与登录用户列表。适合在登录一台不熟悉的机器时快速获得全局视图。参数 file 与 utmp / wtmp 登录记录who 支持传入file参数来指定登录记录文件以替代默认的/var/run/utmp、/etc/utmp。默认情况下who 读取的是记录当前登录会话的 utmp 文件。更常用的做法是传入历史记录文件who /var/log/wtmp/var/log/wtmp保存的是过去登录系统的用户记录因此用who /var/log/wtmp可以查看历史登录信息这也是 wtmp 文件最典型的审计用途。与之配合的是 last 命令文档last 默认读取/var/log/wtmp并把文件内容记录的登录用户名单全部显示出来而 users 命令文档 同样支持传入 FILE 参数默认使用/var/run/utmp、/var/log/wtmp但它只输出用户名列表。三者的关系可以归纳为命令默认数据源输出粒度who/var/run/utmp、/etc/utmp会话完整字段用户、终端、时间、来源who /var/log/wtmp指定 wtmp 文件历史会话完整字段last/var/log/wtmp历史登录记录列表users/var/run/utmp、/var/log/wtmp仅用户名重复会话重复显示返回值返回0表示命令执行成功返回非0值表示执行失败例如指定的记录文件不存在或不可读时。在脚本中使用who时可以基于返回值判断查询是否成功。实战例子以下示例直接来自 command/who.md可在实际服务器上直接运行验证。基本用法列出所有当前登录用户[rootlocalhost ~]# who root pts/0 2013-08-19 15:04 (192.168.0.134) root pts/1 2013-12-20 10:37 (180.111.155.40)输出依次为用户名root、终端pts/0、登录时间2013-08-19 15:04、来源地址括号内的 IP。统计登录会话数量[rootlocalhost ~]# who -q root root # users2-q模式会列出所有已登录用户的名称同一用户多个会话会重复出现并在最后一行以# usersN的形式给出会话总数。注意这里统计的是会话数而非去重后的用户数与 users 命令文档 中如果一个用户有不止一个登录会话那他的用户名将显示相同的次数的语义一致。带列标题输出[rootlocalhost ~]# who -H NAME LINE time COMMENT root pts/0 2013-08-19 15:04 (192.168.0.134) root pts/1 2013-12-20 10:37 (180.111.155.40)-H会在输出顶部打印NAME / LINE / time / COMMENT列标题便于人类阅读或作为脚本表头。显示终端消息状态[rootlocalhost ~]# who -w root pts/0 2013-08-19 15:04 (192.168.0.134) root pts/1 2013-12-20 10:37 (180.111.155.40)-w即-T在用户名后追加、-、?状态字符此处两个会话均为表示终端允许接收消息。只查看自己who am i[rootlocalhost ~]# who am i root pts/0 2013-08-19 15:04 (192.168.0.134)与普通who不同who am i只返回运行命令的用户自身对应的登录会话。查询历史登录结合 file 参数# 查看 /var/log/wtmp 中记录的过去登录信息 who /var/log/wtmp与相关命令的协同与区别linux-command 仓库在同一分类下收录了多个人称相关的命令理解它们的差异有助于在正确场景选用正确命令wcommand/w.md除了显示登录用户还额外展示每个用户正在执行的指令、登录来源、空闲时间、CPU 占用等信息适合观察用户当前在干什么。whoamicommand/whoami.md仅打印当前有效用户 ID 对应的名称等价于id -un文档特别提醒它与logname的区别——通过su切换用户后whoami返回当前有效用户而logname返回原始登录用户。userscommand/users.md只输出登录用户名列表适合脚本中做去重统计前的原始数据。lastcommand/last.md读取/var/log/wtmp展示历史登录记录支持-n限定行数、-f指定记录文件、-x显示关机重启等系统事件。uptimecommand/uptime.md输出系统运行时间、登录用户数与 1/5/15 分钟平均负载与 who 配合可快速评估主机整体状态。一句话总结who 看当前谁登录、last 看过去谁登录过、users 只要名字、whoami 确认自己、w 看大家在做什么。在 linux-command 仓库中的定位与使用本文对应的原始文档位于 command/who.md。该仓库搜集了 600 多个 Linux 命令的手册与详解见 README.md所有命令文档以 Markdown 形式存放在 command 目录下其中who被归入系统管理分类与w、whoami、users、last、uptime等命令同组。仓库的使用方式包括Web 网站检索仓库通过构建脚本将 command 目录中的 Markdown 渲染为静态 HTML 并提供索引搜索详情页模板由 template/details.ejs 负责命令正文内容即来自各 Markdown 文件npm 包引入通过npm install linux-command安装后可以require(linux-command/command/who.md)直接获得该文档的 Markdown 字符串包入口定义见 package.jsonDash/离线文档仓库提供了 scripts/dash.mjs 构建脚本可基于dist/data.json索引与命令文档生成 Dash docset便于在本地离线速查。因此无论是通过 Web 搜索、npm 包还是 Dash 文档who的这份说明都是完整可获取的本文内容与仓库内 command/who.md 保持严格一致。注意事项who是 GNU coreutils 包中的命令相关的完整帮助信息请查看man -s 1 who与info coreutils who invocationwho -q输出中的# usersN统计的是登录会话总数同一用户的多终端登录会计入多次脚本解析时需注意区分会话数与用户数若系统未安装 utmp 相关文件例如部分精简容器镜像who 可能返回非 0 退出码此时应以返回值判断执行结果who /var/log/wtmp读取的是历史记录不同发行版对 wtmp 的轮转策略不同历史记录的保存周期取决于系统日志配置。赞分享文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载相关推荐Linux users 命令详解快速查看当前主机全部登录会话Linux users 命令详解快速查看当前主机全部登录会话 导读 users 是 GNU coreutils 工具包中的一个轻量级命令用于打印当前主机上所文档教程rclone config userinfo 命令详解查看云端存储当前登录用户信息rclone config userinfo 命令详解查看云端存储当前登录用户信息 rclone config userinfo remote: 用于向指定的CLI数据同步对象存储downkyi账户登录记录查看检查账号的登录历史downkyi账户登录记录查看检查账号的登录历史 一、登录记录审计的安全价值 B站用户账号面临的登录风险呈现三大特征 | 风险类型 | 技术原理 | 检测难创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Chaos Monkey 随机杀 Pod 没发现任何问题,但真实故障还是发生了:混沌工程不是随机搞破坏

Chaos Monkey 随机杀 Pod 没发现任何问题,但真实故障还是发生了:混沌工程不是随机搞破坏

title: "Chaos Monkey 随机杀 Pod 没发现任何问题,但真实故障还是发生了:混沌工程不是随机搞破坏" description: "从 Netflix 的 Chaos Monkey 到生产级故障注入,深入讲解混沌工程的设计原则、实验框架和 3 个 Java 故障注入实…

2026/10/4 8:22:42 阅读更多 →
pi coding agent CLI 深度解析:架构、agent loop 与 TUI 启动报错排查

pi coding agent CLI 深度解析:架构、agent loop 与 TUI 启动报错排查

1. 从“pi”这个标题说起:一个极简命名背后的技术野心第一次看到“pi”这个项目标题,很多人会愣一下——是数学常数?是树莓派?还是某个内部代号?我当初也是同样的反应。但把热搜词摊开一看,答案就清楚了&am…

2026/10/4 8:21:41 阅读更多 →
Cursor插件机制深度解析:plugin.json、TypeScript SDK与Web Boot原理

Cursor插件机制深度解析:plugin.json、TypeScript SDK与Web Boot原理

1. 项目概述:从“plugins”这个词开始,我们到底在谈什么?“plugins”——这个词在开发者日常里出现的频率,大概和“undefined”报错一样高频。但有意思的是,绝大多数人每天点开插件市场、安装、启用、再卸载&#xff0…

2026/10/4 8:21:41 阅读更多 →

最新新闻

OmniRoute本地模型代理层实战:多后端路由配置与性能调优指南

OmniRoute本地模型代理层实战:多后端路由配置与性能调优指南

1. 为什么要在本地跑一个模型代理层很多人第一次接触“本地模型代理”这个概念时,脑子里冒出来的第一个疑问是:我明明可以直接调用本地部署的模型服务,为什么还要在中间加一层代理?这不是脱裤子放屁吗?我刚开始也是这么…

2026/10/4 9:06:13 阅读更多 →
插件加载机制深度拆解:从激活失败到排障实战

插件加载机制深度拆解:从激活失败到排障实战

关于plugins的深度拆解:从百战不殆到十面埋伏先交代一下背景。最近在折腾几个项目,结果被plugins这个词反复折磨。不是那种装上就能用的顺心插件,而是各种Failed to load、entry did not activate的报错连环弹。把我真实踩过的坑、排查的思路…

2026/10/4 9:06:13 阅读更多 →
Windows 11效率低?用OpenShell开源工具还原经典开始菜单

Windows 11效率低?用OpenShell开源工具还原经典开始菜单

1. 为什么 Windows 11 会让老用户想找回经典开始菜单把 Windows 11 装完的第一周,我做的最多的一件事是:按一下 Win 键,盯着那个居中排列、塞满“推荐项”和固定应用图标的菜单,然后按 Esc 退出。新布局对触屏和触控板用户确实友好…

2026/10/4 9:06:13 阅读更多 →
插件加载与激活机制全解析:从did not activate到web boot排查

插件加载与激活机制全解析:从did not activate到web boot排查

"plugins"这个词,做开发的基本每天都能撞见。IDE 里有 plugins,构建工具里有 plugins,播放器里有 plugins,甚至连浏览器启动阶段都会因为某个 plugin 没激活而刷一屏的failed to load plugins。很多人被这类报错折磨过&…

2026/10/4 9:06:13 阅读更多 →
ENVI遥感水质反演实战:从模型原理到叶绿素a与悬浮物制图

ENVI遥感水质反演实战:从模型原理到叶绿素a与悬浮物制图

经常有同行问我,说看到别人用ENVI做水质反演,一键就能出叶绿素a或者悬浮物的分布图,自己照着操作却总是不对劲,要么反演结果出现成片负值,要么模型精度低到不敢用。其实遥感水质反演这件事,听起来高大上&am…

2026/10/4 9:06:13 阅读更多 →
Python Selenium 高级防检测:模拟真人滚动、随机行为、彻底去除机器人特征

Python Selenium 高级防检测:模拟真人滚动、随机行为、彻底去除机器人特征

前言用过 Selenium 的同学都知道: 原生脚本百分百被风控识别。原因不止 UA,而是:存在 webdriver 自动化标记滚动行为机械固定操作时序太规律无随机无效行为本文给大家一套工业级学习版真人浏览脚本,去除所有自动化特征&#xff0c…

2026/10/4 9:05:13 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →