Linux查看登录用户

Linux查看登录用户

引言

服务器被多人SSH登录或排查异常连接时,需要看清当前是谁在线、从哪里连进来、在做什么。who、w、id、last几个命令配合,能区分当前身份、在线会话和历史登录记录。

我是谁:whoami

whoami

直接输出当前执行命令的用户名,脚本里判断身份最常用。

查看自己的UID和组

id

输出uid、gid和所属附加组,比whoami信息更全,判断权限时用。

谁在线:who

who

列出所有已登录用户、终端tty、登录时间和来源IP。

在线会话详情:w

w

比who多一列当前正在执行的命令和空闲时长,能看到每个会话在干什么。

历史登录记录:last

last -10

读取/var/log/wtmp,列出最近登录的用户、终端、来源IP和时长,排查入侵看历史。

查特定用户

w root
last root

指定用户名过滤,聚焦某账号的在线和历史。

注意事项

  • whoami只看当前身份,who/w看所有在线会话;
  • w的JCPU是终端累计时间,PCPU是当前进程时间;
  • last依赖wtmp日志,日志轮转后只保留近期;
  • 异常来源IP、陌生账号要结合last和/var/log/secure排查;
  • 系统服务进程不占登录会话,who看不到;
  • 切换用户su后whoami变新用户,但w仍显示原始登录终端。

总结

whoami看当前用户名,id看UID和组,who列在线用户与来源IP,w多显示正在执行的命令,last查历史登录记录。排查时先w看当前在线会话,再last回溯历史,陌生IP和账号结合secure日志,su切换后身份以whoami为准但终端归属原始登录人。


emer 发布于  2026-10-20 07:21 

Linux怎么查看当前在线用户,踢出用户命令

前言

服务器是多人用的,有时候需要看看谁在线上,或者把某个挂机的用户踢下线。Linux 自带了几个命令可以查看当前在线用户,本文就讲一下怎么用。

查看在线用户

who 命令

最简单的命令,直接看谁在线:

who

输出类似:

root     pts/0        2026-10-06 09:00 (192.168.1.100)
zhangsan pts/1        2026-10-06 09:15 (192.168.1.101)
lisi     pts/2        2026-10-06 09:20 (192.168.1.102)

每一列分别是:用户名、终端、登录时间、来源 IP。

w 命令

比 who 更详细,还能看到用户在干嘛:

w

输出类似:

 09:30:00 up  2:15,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.1.100    09:00    5.00s  0.03s  0.01s w
zhangsan pts/1    192.168.1.101    09:15    15.00s 0.02s  0.00s bash
lisi     pts/2    192.168.1.102    09:20    1:30   0.01s  0.01s top

多了几列:

  • LOGIN@:登录时间
  • IDLE:空闲时间
  • JCPU:该终端所有进程用的 CPU 时间
  • PCPU:当前进程用的 CPU 时间
  • WHAT:当前在跑什么命令

users 命令

只看用户名,重复的就重复显示:

users

输出:

root zhangsan lisi

last 命令

看历史登录记录:

last

会列出最近登录过的用户,包括用户名、终端、来源 IP、登录时间、退出时间、总共在线多久。

踢出用户

pkill 踢出某个用户

比如把 zhangsan 踢下线:

pkill -u zhangsan

这会杀掉 zhangsan 的所有进程,直接把他踢下线。

杀掉某个终端

先看 who,找到要踢的人的终端,比如 pts/1:

who

然后杀掉这个终端:

pkill -t pts/1

或者:

kill -9 $(ps -t pts/1 -o pid=)

踢所有非 root 用户

警告!这会把其他所有登录的人都踢掉:

pkill -u -root

常见坑

坑1:把自己踢下线了

执行 pkill 的时候把自己的终端也杀掉了,SSH 直接断开。

解决: 踢人的时候确认一下自己的终端,别把自己踢了:

who am i

先看自己是哪个终端,然后踢别人的时候避开自己的终端。

坑2:踢了用户但他又登回来了

踢了之后用户马上又登上来了,没用。

解决: 如果是恶意用户,直接改密码或者封 IP:

# 改密码
passwd 用户名

# 封 IP
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.101' reject"
firewall-cmd --reload

坑3:看不到图形界面登录的用户

who 只看终端登录的,图形界面登录的可能看不到。

解决: 用 last 看历史记录,或者看 /var/log/auth.log(CentOS 是 /var/log/secure)。

总结

查看在线用户的常用命令:

命令 作用
who 看谁在线
w 看谁在线 + 在干嘛
users 只看用户名
last 看历史登录记录
pkill -u 用户名 踢出某个用户
pkill -t pts/1 杀掉某个终端

日常运维用 w 就够了,信息最全。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-6 07:40 
'); })();