who
命令:查看当前登录用户
命令:
who
输出示例:
user1 pts/0 2025-10-05 14:30 (192.168.1.10) user2 tty1 2025-10-05 09:15 (:0)
参数解析:
- 用户名:登录用户的账户名。
- 终端类型:
pts/*
:远程终端(如SSH连接)。tty*
:本地物理终端。
- 登录时间:用户连接的起始时间。
- 来源IP:远程用户的IP地址(本地用户显示为空或
:0
)。
常用选项:
who -u
:显示空闲时间(IDLE列)。who -H
行(便于阅读)。
w
命令:查看用户及活动进程
命令:
w
输出示例:
14:45:03 up 2 days, 3:22, 2 users, load average: 0.15, 0.08, 0.06 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT user1 pts/0 192.168.1.10 14:30 5.00s 0.05s 0.00s sshd: user1 [priv] user2 tty1 :0 09:15 2days 0.20s 0.00s /bin/bash
关键信息:
- 系统负载:首行显示运行时间及平均负载。
- 用户活动:
WHAT
:用户当前运行的命令(如sshd
表示SSH会话)。JCPU
:该终端所有进程占用CPU时间。IDLE
:用户空闲时间(2days
表示持续未操作)。
last
命令:查看历史登录记录
命令:
last
输出示例:
user1 pts/0 192.168.1.10 Thu Oct 5 14:30 still logged in user2 tty1 Thu Oct 5 09:15 still logged in reboot system boot 5.4.0-91-generic Thu Oct 5 09:10 still running
作用:
- 显示所有登录/重启记录(包括已断开连接的用户)。
- 数据来源:
/var/log/wtmp
(需sudo
权限访问)。
常用选项:
last -n 5
:仅显示最近5条记录。last user1
:仅查看user1
的记录。
users
命令:快速显示用户名
命令:
users
输出示例:
user1 user2
适用场景:
仅需检查哪些用户在线,无需详细信息时使用。
查看实时终端连接
通过/dev/pts
目录直接查看活跃终端:
ls /dev/pts
输出中的数字编号(如pts/0
)对应每个远程会话的终端ID。
高级方法:ss
或 netstat
通过端口分析网络连接(需结合进程信息):
ss -tpn | grep sshd
输出示例:
ESTAB 0 0 192.168.1.100:22 192.168.1.10:54321 users:(("sshd",pid=1234,fd=3))
说明:
- 显示SSH连接及关联进程(
sshd
)。 - 适用于验证远程用户是否通过SSH连接。
注意事项
- 权限要求:
- 普通用户可查看自身会话。
- 完整信息需
root
权限(如last
读取系统日志)。
- 安全操作建议:
- 谨慎断开用户:使用
pkill -KILL -t pts/0
终止指定终端(需sudo
)。 - 定期审计:通过
last
检查异常登录时间或IP。
- 谨慎断开用户:使用
- 数据来源:
- 实时会话:
who
、w
读取/var/run/utmp
。 - 历史记录:
last
读取/var/log/wtmp
。
- 实时会话:
命令 | 适用场景 | 优势 |
---|---|---|
who |
快速查看在线用户及来源IP | 输出简洁,适合基础检查 |
w |
监控用户活动及资源占用 | 集成系统负载和进程信息 |
last |
审计历史登录记录 | 追踪安全事件或异常登录 |
users |
仅需用户名列表 | 极简输出,便于脚本处理 |
引用说明参考Linux man手册(
man who
、man w
等)及开源社区文档(如Linux Documentation Project),确保方法符合主流发行版(Ubuntu/CentOS等),操作建议基于Linux内核5.4+环境验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8333.html