Linux下可以通过w命令或who命令查看当前登录的所有主机的pts信息,而非正常退出时,有时候pts并不会释放,这就会占用/dev/tty资源。如何将这种非正常退出的进程kill掉呢?当然,我们可以通过ps auxf指令进行查看,再获取相应的进程信息后,再kill掉进程。同样也可以也可以使用pkill直接进行查杀。
查看当前的pts占用情况:
[root@localhost ~]# w
14:21:27 up 71 days, 3:54, 2 users, load average: 0.64, 0.39, 0.35
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 127.0.0.1 14:21 7.00s 0.16s 0.04s w
root pts/4 127.0.0.1 14:21 3.00s 0.12s 0.12s -bash
除了使用ps auxf进行详细的查看外,还可以使用如下命令查看其对的pid值:
[root@localhost ~]# ps -t tty1
PID TTY TIME CMD
2363 tty1 00:01:05 X
[root@localhost ~]# ps -t /dev/tty1
PID TTY TIME CMD
2363 tty1 00:01:05 X
查到对应的pid后,直接kill -9 pid就可以结束该进程了。不过除此之外,我们还可以使用pkil指令进行比较快速的杀tty,踢用户:
[root@redhat ~]# pkill -t tty1 #杀死终端1下的所有进程
[root@Centos ~]# pkill -kill -t pts/2 #踢用户
[root@redhat ~]# pkill -9 6985 #彻底杀死进程
[root@redhat ~]# pkill -u tank #杀死指定用户的所有进程
[root@redhat ~]# pkill -vu root #杀死不属于root用户的所有进程