Linux下可以通过w命令或who命令查看当前登录的所有主机的pts信息,而非正常退出时,有时候pts并不会释放,这就会占用/dev/tty资源。如何将这种非正常退出的进程kill掉呢?当然,我们可以通过ps auxf指令进行查看,再获取相应的进程信息后,再kill掉进程。同样也可以也可以使用pkill直接进行查杀。

查看当前的pts占用情况:

1[root@localhost ~]# w
2 14:21:27 up 71 days,  3:54,  2 users,  load average: 0.64, 0.39, 0.35
3USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
4root     pts/0    127.0.0.1        14:21    7.00s  0.16s  0.04s w
5root     pts/4    127.0.0.1        14:21    3.00s  0.12s  0.12s -bash

除了使用ps auxf进行详细的查看外,还可以使用如下命令查看其对的pid值:

1[root@localhost ~]# ps -t tty1
2  PID TTY          TIME CMD
3 2363 tty1     00:01:05 X
4[root@localhost ~]# ps -t /dev/tty1
5  PID TTY          TIME CMD
6 2363 tty1     00:01:05 X

查到对应的pid后,直接kill -9 pid就可以结束该进程了。不过除此之外,我们还可以使用pkil指令进行比较快速的杀tty,踢用户:

1[root@redhat ~]# pkill -t tty1 #杀死终端1下的所有进程
2[root@Centos ~]# pkill -kill -t pts/2 #踢用户
3[root@redhat ~]# pkill -9 6985 #彻底杀死进程
4[root@redhat ~]# pkill -u tank #杀死指定用户的所有进程
5[root@redhat ~]# pkill -vu root #杀死不属于root用户的所有进程