在Linux系统中,查看登录用户是系统管理和安全维护的基础操作,无论是监控当前系统使用情况、排查异常登录行为,还是优化资源分配,都需要掌握相关命令和方法,本文将详细介绍Linux系统中查看登录用户的多种命令,包括其功能、参数、输出示例及适用场景,帮助管理员根据实际需求选择合适的工具。
基础查看命令:who
who
是最常用的查看登录用户命令,它从/var/log/wtmp
文件中读取信息,显示当前登录系统的用户列表,包括用户名、终端、登录时间等核心信息。
基本用法
直接执行who
命令,默认输出格式为:
用户名 终端 登录时间 IP地址
root pts/0 2023-10-01 10:15 (192.168.1.100)
alice tty1 2023-10-01 09:30
- 用户名:登录系统的账户名称;
- 终端:用户登录的终端类型,
tty
表示本地物理终端,pts/
表示虚拟终端(如SSH登录); - 登录时间:用户登录的精确时间;
- IP地址:远程登录的客户端IP(本地登录显示为空)。
常用参数
-u
:显示用户空闲时间(表示当前活跃,old
表示长时间未操作);-q
:仅显示登录用户数量,并列出用户名(适合快速统计在线人数);-H
:显示列标题(便于解析输出);-m
:显示当前用户信息(等同于who am i
)。
示例:
who -uH # 显示带标题的用户列表及空闲时间
输出可能为:
USER TERM IDLE PID COMMENT
root pts/0 . 12345 (192.168.1.100)
alice tty1 old 6789
详细活动监控:w
w
命令在who
的基础上,进一步显示系统负载和每个用户的进程信息,适合监控用户当前活动状态。
基本用法
执行w
命令后,输出分为两部分:
- 第一行:系统时间、运行时长、登录用户数、1/5/15分钟负载均值;
- 第二部分:每个用户的详细活动,包括用户名、终端、登录时间、空闲时间、JCPU(用户进程累计CPU时间)、PCPU(当前进程CPU时间)、正在执行的命令。
示例输出:
10:30:01 up 2 days, 3:15, 2 users, 负载均值: 0.15, 0.10, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.100 10:15 5:00 0.02s 0.01s -bash
alice tty1 - 09:30 2days 0.01s 0.01s /usr/bin/Xorg
常用参数
-h
行(适合脚本处理);-u
:显示用户空闲时间(默认已包含);-s
:简洁模式,不显示JCPU/PCPU和命令字段。
示例:
w -h # 仅显示用户活动信息,无标题
登录历史查询:last
last
命令读取/var/log/wtmp
文件,显示用户的登录历史记录(包括成功登录、注销、重启等),适合审计用户行为。
基本用法
直接执行last
,按时间倒序显示登录记录,包含用户名、终端、IP地址、登录时间、持续时间、退出状态等。
示例输出:
root pts/0 192.168.1.100 Mon Oct 1 10:15 still logged in
alice tty1 - Mon Oct 1 09:30 - 10:30 (00:59)
reboot system boot 5.15.0-52-generic Mon Oct 1 09:30 (2+03:15)
still logged in
:用户仍在登录状态;(00:59)
:登录持续时长;reboot
:系统重启记录。
常用参数
-n 10
:显示最近10条记录;-x
:显示关机、重启等非登录记录;-i
:显示IP地址而非主机名(适用于DNS解析异常的情况)。
示例:
last -n 5 -x # 显示最近5条登录及系统事件记录
失败登录记录:lastb
lastb
命令读取/var/log/btmp
文件,显示失败的登录尝试(如密码错误、账户不存在等),是安全审计的重要工具。
基本用法
需root权限执行(普通用户无权限访问btmp
),输出格式与last
类似,记录失败登录的用户、终端、IP和时间。
示例输出:
invalid pts/1 192.168.1.200 Mon Oct 1 11:00 - 11:00 (00:00)
bob tty2 - Mon Oct 1 10:45 - 10:45 (00:00)
常用参数
-n 3
:显示最近3条失败记录;-i
:显示IP地址。
示例:
sudo lastb -n 3 # 查看最近3次失败登录
简洁用户列表:users
users
命令以空格分隔的形式列出所有当前登录的用户,适合快速获取在线用户名(无详细信息)。
基本用法
users
输出示例:
root alice bob
系统负载与用户数:uptime
uptime
命令主要用于显示系统运行时间和负载,但也会附带当前登录用户数,适合快速了解系统整体状态。
基本用法
uptime
输出示例:
10:30:01 up 2 days, 3:15, 2 users, 负载均值: 0.15, 0.10, 0.05
2 users
:当前登录用户数。
日志分析:journalctl
对于使用systemd的现代Linux系统,可通过journalctl
查询登录相关的系统日志,灵活性更高。
基本用法
sudo journalctl -u systemd-logind -n 10 # 查看登录服务最近10条日志
输出示例:
10月月01 10:15:01 systemd[1]: Started Session 2 of user root.
10月月01 10:15:01 systemd[1]: New session c2 of user root.
10月月01 09:30:00 systemd[1]: Started Session 1 of user alice.
命令对比总结
命令 | 功能描述 | 常用参数 | 适用场景 |
---|---|---|---|
who |
显示当前登录用户基本信息 | -u (空闲时间)、-q (用户数)、-H
| |
w |
显示用户详细活动及系统负载 | -h )、-s (简洁模式) |
监控用户实时活动、资源占用 |
last |
查询登录历史记录 | -n (条数)、-x (显示系统事件) |
审计用户登录行为、排查历史问题 |
lastb |
查询失败登录记录 | -n (条数)、-i (显示IP) |
安全审计、检测暴力破解 |
users |
简洁列出当前用户 | 无 | 快速获取在线用户名列表 |
uptime |
显示系统负载及用户数 | -p (友好时间)、-s (启动时间) |
快速了解系统状态及在线人数 |
journalctl |
查询登录日志 | -u (服务名)、-n (条数)、-f (实时) |
灵活分析登录事件、深度排查问题 |
Linux查看登录用户的方法多样,需根据具体需求选择:日常监控用who
/w
,历史审计用last
/lastb
,快速统计用users
/uptime
,深度日志分析用journalctl
,掌握这些命令,能帮助管理员高效管理多用户环境,保障系统安全稳定运行。
相关问答FAQs
Q1: 如何查看当前登录用户的详细活动(如正在执行的命令)?
A: 使用w
命令可查看用户当前活动,包括终端、登录时间、空闲时间及正在执行的命令。w -u
会显示用户空闲时间,w -h
行便于脚本解析,若需查看特定用户的进程详情,可结合ps
命令,如ps -u 用户名
列出该用户的所有进程。
Q2: 如何查看远程登录用户的IP地址?
A: 多数命令已支持显示IP地址:
who
命令默认显示远程登录的IP(本地登录为空);last
命令通过-i
参数强制显示IP(如last -n 5 -i
);lastb
命令同样支持-i
参数查看失败登录的IP(需root权限)。
本地终端(如tty1
)的IP地址通常显示为或,因其为物理本地登录。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/35352.html