您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Linux系统中如何用who命令
## 一、who命令概述
`who`命令是Linux系统中一个基础但强大的实用工具,用于显示当前登录系统的用户信息。作为系统管理员和普通用户常用的命令之一,它能够快速提供用户会话的详细信息,包括登录用户名、终端设备、登录时间以及来源IP地址(如果适用)等。
### 1.1 命令基本功能
- 显示当前登录用户列表
- 查看用户登录时间
- 识别用户使用的终端设备
- 显示系统启动时间(特定选项)
### 1.2 命令特点
- 轻量级,执行速度快
- 无需特殊权限即可运行
- 信息直接来源于/var/run/utmp文件
- 支持多种格式化输出选项
## 二、基本语法与常用选项
### 2.1 基本命令格式
```bash
who [选项] [文件]
选项 | 功能描述 |
---|---|
-a | 显示所有信息(相当于-b -d –login -p -r -t -T -u) |
-b | 显示系统最近启动时间 |
-d | 显示已退出的进程 |
-H | 显示列标题 |
-q | 快速模式,只显示用户名和用户数 |
-r | 显示运行级别 |
-s | 简略显示(默认选项) |
-u | 显示空闲时间 |
-T | 显示用户消息状态(+:允许消息;-:禁止消息;?: 无法确定终端) |
who
典型输出:
user1 pts/0 2023-08-15 09:30 (192.168.1.100)
user2 tty2 2023-08-15 10:15 (:0)
who -H
输出示例:
NAME LINE TIME COMMENT
user1 pts/0 2023-08-15 09:30 (192.168.1.100)
who -b
输出:
system boot 2023-08-15 08:30
who -a
输出包含: - 系统启动时间 - 运行级别变化 - 用户登录记录 - 死进程信息
who -q
输出:
user1 user2
# users=2
who -T
输出中消息状态指示:
user1 + pts/0 2023-08-15 09:30 (192.168.1.100)
who | wc -l # 统计当前登录用户数
who | grep pts/0 # 查找特定终端的登录信息
[用户名] [终端线路] [登录时间] [远程主机名/IP]
ttyX
:物理终端pts/X
:伪终端(SSH/Xshell等远程连接):0
或空/var/run/utmp
who
命令的主要数据源/var/log/wtmp
last
命令查看/var/log/btmp
lastb
命令查看可能原因: - utmp文件损坏 - 权限问题(需检查/var/run/utmp权限)
解决方案:
sudo touch /var/run/utmp
sudo chmod 644 /var/run/utmp
原因分析: - 用户会话异常终止 - 终端设备未正确释放
解决方法:
ps -ft <终端名> # 查找相关进程
kill -9 <PID> # 终止残留进程
who -u | awk '{if($5 > 24:00) print $0}' # 检测长时间空闲会话
#!/bin/bash
LOG_FILE="/var/log/user_audit.log"
echo "$(date) - Current users:" >> $LOG_FILE
who -a >> $LOG_FILE
who
:只显示基本信息w
:额外显示用户当前进程和系统负载users
:仅显示用户名列表who
:提供详细信息last
:查看历史登录记录who
:只显示当前会话who
命令作为Linux用户管理的基础工具,虽然简单但功能实用。通过掌握其各种选项和组合用法,可以有效地监控系统登录状态、进行基本的系统审计以及排查用户会话问题。建议系统管理员将who
命令纳入日常维护工具箱,结合其他命令如w
、last
等,构建完整的用户会话监控方案。
注意:不同Linux发行版的
who
命令可能有细微差别,建议通过man who
查看具体系统的手册页获取最准确的信息。 “`
这篇文章共计约1500字,采用Markdown格式编写,包含: - 多级标题结构 - 代码块示例 - 表格展示 - 有序/无序列表 - 强调文本 - 实际命令示例 - 问题解决方案 - 相关命令对比等内容
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。