前述
Linux系统为多用户多任务系统,因此允许多个用户登录到系统,有时候,我们需要强制某些用户下线.
主要2种方式:
1、强制其他用户下线命令格式:pkill -kill -t tty
只有root用户才能强制其他用户下线。如果同时有二个人用root用户登录,任何其中一个可以强制下线另一个。任何用户都可以强制自己下线
2、杀进程:杀死相应用户的登陆进程
ps -ef | grep pts/0
kill -9 pid
详细使用方式
方式一
注意:某些linux要求必须是root权限
(1). 使用who或w命令查看当前登录的用户和会话ID( 建议使用w,可以查看到跟详细的信息)。
who
[root@vm18 ~]# who
root pts/0 2015-03-27 10:23 (192.168.9.188)
或
w
[root@vm18 ~]# w
15:20:23 up 80 days, 1:31, 4 users, load average: 1.78, 2.20, 2.49
USER TTY 来自 LOGIN@ IDLE JCPU PCPU WHAT
ze01 :0 :0 253月24 ?xdm? 69days 0.15s /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu /u
ze02 pts/9 10.138.10.196 二14 2.00s 13.42s 0.01s w
ze03 pts/1 10.138.22.174 15:20 2.00s 0.21s 0.00s zsh -c adb shell cat /data/vendor/zkos/zcompute/exd/vcompute/log/vcompute_20240
ze01 pts/23 10.138.22.174 三17 4:46 9.86s 9.86s -zsh
从上文可以看出用户root使用ip地址为192.168.9.188登录到linux系统上
(2). 看看root都在什么时间登录过系统
[root@vm18 ~]# last root
root pts/0 192.168.9.188 Fri Mar 27 10:23 still logged in
(3). 使用pkill -kill -t pts/0命令踢出第一个用户,即强制下线。
[root@vm18 ~]# pkill -kill -t pts/0
命令解释:pts/1 对应的是该用户的TTY。
方式二
注意:某些linux要求必须是root权限
(1). 使用who或w命令查看当前登录的用户和会话ID( 建议使用w,可以查看到跟详细的信息)。
$ who
test tty1 2022-08-20 09:30
root pts/0 2022-08-20 09:31 (:0.0)
可以看到,test用户的会话ID为tty1。
(2). 使用ps命令查看指定用户的进程ID(PID)。
比如 使用ps命令查看test用户的进程ID:
$ ps -u test
PID TTY TIME CMD
1234 tty1 00:00:00 bash
可以看到,test用户的bash进程的PID为1234。
(3). 使用kill命令向PID为1234的进程发送信号:
$ sudo kill -15 1234
这会向test用户的bash进程发送SIGTERM信号,使其正常退出登录。如果需要强制注销用户,可以使用SIGKILL信号:
$ sudo kill -9 1234
需要注意的是,强制注销用户可能会导致数据丢失或损坏,应该尽量避免使用。
其他方式
对于使用systemd作为初始化的系统,目前已经没有这么麻烦。仅通过如下命令即可完成在线用户的下线。
1、对于root用户:
#loginctl kill-user 用户名
2、对于非root用户,如果想执行以上命令,必须拥有root密码才能将对方下线。