答案是 who、w 和 users 命令用于查看Linux系统登录用户,其中 who 显示登录用户及终端信息,w 还显示用户正在执行的命令和系统负载,users 仅输出用户名列表。

在Linux命令行下,要查看当前系统上有哪些用户登录,最直接、最常用的命令包括
who
w
users
作为一个常年和Linux打交道的人,我发现查看登录用户这事儿,看似简单,实则有些门道。不同的命令,给出的信息维度和粒度都不一样,得看你具体想知道什么。
who
who
who # 示例输出: # user1 tty7 2023-10-27 09:30 (:0) # user2 pts/0 2023-10-27 10:15 (192.168.1.100)
我个人觉得,
who
-u
-H
w
who
w
who
w # 示例输出: # 10:45:01 up 1 day, 1:15, 2 users, load average: 0.00, 0.01, 0.05 # USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT # user1 tty7 :0 09:30 1:15m 0.50s 0.05s /usr/bin/gnome-session # user2 pts/0 192.168.1.100 10:15 0.00s 0.02s 0.01s bash
我经常用
w
users
users
users # 示例输出: # user1 user2
有时候我写脚本,需要快速获取一个用户列表,
users
who
w
logname
whoami
logname
su
sudo
logname
logname # 示例输出: # user1
在某些需要追踪原始会话的场景下,
logname
whoami
id -un
id
id -un
sudo su -
id -un # 示例输出: # user1 (如果你是user1) # root (如果你是root)
在脚本里,我更倾向于用
id -un

这是一个很实际的问题,毕竟不是所有登录都意味着一个活生生的人坐在键盘前。在Linux里,我们通常会看到几种不同的会话类型,主要通过
TTY
PTS
TTY
TTY
tty1
tty6
TTY
PTS
PTS
pts/0
pts/1
PTS
举个例子,
who
w
user1 tty7 ... (:0)
:0
user2 pts/0 ... (192.168.1.100)
192.168.1.100
user3 tty1 ...
理解这些区分对于系统管理员来说太重要了。它能让你快速判断是本地用户在操作,还是有外部连接,甚至能帮助你识别一些异常登录行为。比如,如果你发现一个平时只在本地操作的用户突然出现在一个
PTS
/var/run/utmp
who
w

who
w
我遇到过好几次这种情况,尤其是在服务器负载高或者有异常进程的时候,
who
w
who
/var/run/utmp
/var/log/wtmp
-a
-b
who
而
w
utmp
那么,差异从何而来呢?
utmp
who
w
who
w
w
w
systemd-logind
who
w
所以,如果遇到不一致的情况,我通常会更信任
w
who

作为一个系统维护者,仅仅知道谁登录了是远远不够的。你需要一个全景图来确保系统安全和性能。除了上面提到的命令,还有一些我常用的工具,它们就像我的“眼睛”和“耳朵”,帮我捕捉系统中的每一个细微变化。
last
/var/log/wtmp
last # 示例输出: # user1 pts/0 192.168.1.100 Fri Oct 27 10:15 - 10:45 (00:30) # reboot system boot 5.15.0-86-generi Fri Oct 27 09:29 still running
当我怀疑有未经授权的登录或者想追踪某个用户的登录习惯时,
last
lastb
last
lastb
faillog
/var/log/btmp
lastb # 示例输出: # root ssh:notty unknown Fri Oct 27 10:00 - 10:00 (00:00)
这个命令对于安全审计至关重要。如果我看到大量针对
root
ps aux
top
htop
ps aux
top
htop
top
# ps aux 示例: # USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND # user1 1234 0.1 0.5 123456 54321 pts/0 S 10:15 0:01 /bin/bash
这些命令能让我看到系统上到底有哪些程序在跑,它们是谁启动的,占用了多少资源。如果系统性能下降,我通常会先用
top
htop
netstat -tulnp
ss -tulnp
netstat
ss
t
u
l
n
p
# ss -tulnp 示例:
# Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
# tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=789,fd=3))我用它们来检查服务器上是否开放了不该开放的端口,或者是否有未经授权的程序在监听网络连接。结合
ps
auditd
auditd
# 示例:查看审计日志 # ausearch -m USER_LOGIN -ts today
虽然配置
auditd
这些命令共同构成了一个强大的监控工具集。仅仅知道谁登录了是不够的,你需要一个全景图来确保系统安全和性能。它们就像你的“眼睛”和“耳朵”,帮你捕捉系统中的每一个细微变化。
以上就是Linux命令行如何查看登录用户的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号