Linux常用命令(1) - who
命令概述
who 命令用于显示当前登录系统的用户信息。
基本语法
who [选项] [文件]
如果不指定文件,默认读取 /var/run/utmp
常用选项
1. 显示所有用户登录信息
who
输出格式:用户名 终端设备 登录时间 [远程主机地址]
2. 显示系统启动时间 (-b)
who -b # 或 who --boot
显示系统最后一次启动时间。
3. 显示登录进程的PID (-p, -u)
who -u # 或 who --users
显示用户空闲时间和进程ID,格式:用户名 终端 登录时间 空闲时间 PID 备注
4. 显示系统运行级别 (-r)
who -r # 或 who --runlevel
显示当前运行级别和上次运行级别变更时间。
5. 显示标题行 (-H)
who -H
为每列信息添加标题行。
6. 显示所有信息 (-a)
who -a
显示所有可用信息,相当于 who -b -d --login -p -r -t -T -u
常用组合示例
示例1:查看所有登录用户详细信息
who -uH
输出:
NAME LINE TIME IDLE PID COMMENT root tty1 2024-01-15 08:30 00:15 1234 user1 pts/0 2024-01-15 09:00 00:05 2345 (192.168.1.100)
示例2:查看系统信息和登录用户
who -b -r -u
输出系统启动时间、运行级别和用户信息。
示例3:查看所有历史登录记录
who /var/log/wtmp
/var/log/wtmp 文件记录了所有历史登录信息。
示例4:显示简化的登录信息
只显示用户名和用户总数。
字段解释
who 输出的各个字段:
-
NAME - 登录用户名
-
LINE - 终端设备(ttyN, pts/N)
-
TIME - 登录时间
-
IDLE - 空闲时间(. 表示最近1分钟内有活动)
-
PID - 登录进程ID
-
COMMENT - 远程主机名或IP地址
who -r 输出的运行级别字段:
-
运行级别 日期 时间 上次运行级别 -
N 3 2024-01-15 08:30表示当前运行级别3,上次运行级别N(无)
相关文件
| 文件路径 | 用途 |
|---|---|
/var/run/utmp |
当前登录会话信息 |
/var/log/wtmp |
历史登录记录(二进制) |
/var/log/btmp |
失败的登录尝试 |
/proc/self/sessionid |
当前会话ID |
实用技巧
1. 统计在线用户数
4. 显示完整的登录信息(包含主机)
5. 结合awk提取特定信息
# 提取所有登录用户的IP地址 who | awk '{print $NF}' | grep -v "^(" # 显示登录时间和终端 who | awk '{print $1, $2, $3, $4}'
与其他命令对比
| 命令 | 功能 | 输出详细程度 |
|---|---|---|
who |
显示登录用户 | 基本信息 |
w |
显示登录用户及活动 | 详细信息(包括正在执行的命令) |
users |
显示登录用户名 | 仅用户名 |
last |
显示登录历史 | 详细历史记录 |
whoami |
显示当前用户 | 仅当前用户 |
实际应用场景
场景1:监控系统访问
场景2:安全审计
场景3:生成登录报告
注意事项
-
普通用户只能看到自己的登录信息
-
root用户可以看到所有登录信息
-
utmp文件是二进制格式,不能直接编辑 -
某些选项可能需要特定权限才能看到完整信息
who 命令是系统管理员日常管理中非常实用的工具,可以快速了解系统的登录状态和运行情况。

浙公网安备 33010602011771号