查看当前登录用户
1. 使用 w 命令
[root@k8s-nginx1 ~]# w 10:58:34 up 26 days, 16:59, 2 users, load average: 0.00, 0.04, 0.06 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/1 10.6.0.18 10:57 1:15 0.01s 0.01s -bash root pts/2 10.6.0.18 10:57 2.00s 0.05s 0.01s w
输出说明:
- USER: 登录用户名
- TTY: 终端类型(pts/0, pts/1 等表示伪终端,tty1 等表示物理终端)
- FROM: 登录来源 IP 地址
- LOGIN@: 登录时间
- IDLE: 空闲时间
- JCPU: 该终端所有进程占用 CPU 时间
- PCPU: 当前进程占用 CPU 时间
- WHAT: 用户当前执行的命令
2. 使用 who 命令
[root@k8s-nginx1 ~]# who root pts/1 2019-12-19 10:57 (10.6.0.18) root pts/2 2019-12-19 10:57 (10.6.0.18)
3. 使用 who am i 命令
[root@k8s-nginx1 ~]# who am i root pts/1 2019-12-19 10:57 (10.6.0.18)
此命令只显示当前用户自己的登录信息。
用户会话管理
查看自己的终端信息
[root@k8s-nginx1 ~]# tty /dev/pts/1
强制踢出用户
当需要维护系统时,可能需要强制断开其他用户的连接:
# 踢出指定终端的用户
[root@k8s-nginx1 ~]# pkill -kill -t pts/0
# 或者使用以下命令
[root@k8s-nginx1 ~]# skill -kill -t pts/0
[root@k8s-nginx1 ~]# kill -9 `ps -t pts/0 | awk 'NR>1 {print $1}'`
与用户通信
在踢出用户之前,建议先通知对方:
方法一:使用 echo 命令
[root@k8s-nginx1 ~]# echo "系统维护,请立即保存工作并下线!" > /dev/pts/2
对方终端会立即显示:
text复制下载
系统维护,请立即保存工作并下线!
方法二:使用 write 命令
# 先查看在线用户 [root@k8s-nginx1 ~]# w # 向指定用户发送消息 [root@k8s-nginx1 ~]# write root pts/2 系统即将进行维护,请在5分钟内保存工作并退出。 按 Ctrl+D 结束消息输入
方法三:使用 wall 命令(向所有用户广播)
[root@k8s-nginx1 ~]# wall "系统将在5分钟后进行维护,请立即保存工作!"
其他相关命令
查看用户登录历史
# 查看最近登录用户 last # 查看当前登录用户的详细信息 who -a # 查看用户登录失败记录 lastb
查看特定用户信息
# 查看指定用户的登录情况 who | grep username w | grep username
最佳实践建议
- 提前通知: 在计划维护前,通过适当渠道提前通知用户
- 礼貌沟通: 使用
write或wall命令友好地通知用户 - 给予缓冲时间: 在发送通知后等待合理时间再执行踢出操作
- 记录操作: 重要操作前做好记录,便于审计和问题排查
- 权限控制: 确保只有授权人员才能执行用户管理操作
通过这些命令和方法,系统管理员可以有效地监控和管理服务器上的用户会话,确保系统维护工作的顺利进行。