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 协助处理