通过终止用户进程踢出(推荐)
方法1:使用 pkill
命令
sudo pkill -9 -u <用户名>
- 原理:终止该用户所有进程(包括登录会话)。
- 参数说明:
-u <用户名>
:指定目标用户。-9
:发送SIGKILL
信号强制终止。
- 示例:踢出用户
john
sudo pkill -9 -u john
方法2:使用 killall
命令
sudo killall -9 -u <用户名>
- 效果与
pkill
相同,但需确保系统已安装killall
(部分发行版默认未安装)。
通过终端会话踢出
方法1:使用 who
或 w
定位会话
-
查看当前登录用户:
w # 或使用 who
输出示例:
10:15:01 up 2 days, 3:22, 3 users, load average: 0.08, 0.03, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT john pts/0 192.168.1.10 09:30 20:00 0.10s 0.00s bash
- 记录目标用户的
TTY
(如pts/0
)。
- 记录目标用户的
-
终止会话:
sudo kill -9 $(ps -t <TTY> | awk 'NR>1 {print $1}')
- 示例:踢出
pts/0
上的用户sudo kill -9 $(ps -t pts/0 | awk 'NR>1 {print $1}')
- 示例:踢出
方法2:使用 fuser
强制释放终端
sudo fuser -k /dev/<TTY>
- 示例:释放终端
pts/1
sudo fuser -k /dev/pts/1
通过SSH服务踢出(针对远程登录)
方法1:终止SSH进程
- 查找用户SSH进程ID:
ps aux | grep sshd:.*<用户名>
- 终止进程:
sudo kill -9 <进程ID>
方法2:清空utmp
记录(重启后失效)
sudo utmpdump /var/run/utmp | grep -v <用户名> | utmpdump -r > /tmp/new_utmp sudo mv /tmp/new_utmp /var/run/utmp
- 此操作清除用户登录记录,但不会立即终止进程(需配合进程终止)。
注意事项
- 数据丢失风险:强制踢出可能导致用户未保存的数据丢失,操作前建议通知。
- 权限要求:所有命令需
root
或sudo
权限。 - 会话残留:部分图形界面会话可能需重启显示管理器(如
sudo systemctl restart gdm
)。 - 安全审计:操作记录可通过
last
或/var/log/auth.log
查看。
场景 | 推荐命令 |
---|---|
快速踢出所有进程 | sudo pkill -9 -u <用户名> |
精准踢出特定终端 | sudo fuser -k /dev/<TTY> |
踢出SSH用户 | sudo kill -9 <SSH进程ID> |
重要提示:
- 生产环境操作前备份关键数据。
- 了解用户活动(通过
w
或who
)避免误操作。- 参考官方文档:
GNU Coreutils | Linux man-pages
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5043.html