某个终端卡死?直接关闭再开一个,最简单了。
但是,我觉得这样子不装逼,非得找出原因才是。我现在遇到的情况是,我开了一个终端,然后我又ssh到机房的电脑上面,但是连接上去过了10多分钟后这个连接就卡死了,ctrl+c都不能取消,这是连接卡死的问题,因此我就这样子来做。
首先是再开一个新终端,然后查看第一个终端号,我用的是xshell,因此是伪终端类型,一般确定第一个终端号是用tty命令和w命令结合。比如我这里
[root@chaofeng ~]# w 17:43:59 up 5 days, 6:09, 5 users, load average: 0.00, 0.03, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 Thu11 2days 0.01s 0.01s -bash root pts/0 192.168.20.54 Mon17 1:01m 0.01s 0.01s -bash root pts/1 192.168.20.54 Mon19 1:01m 0.02s 0.02s -bash root pts/2 192.168.20.54 Sat22 7.00s 0.18s 0.00s w root pts/3 192.168.20.54 Sat11 7.00s 0.15s 0.11s -bash
看得出来我现在连接非常多,但是我怎么确定卡死的哪个终端号是多少呢?其实不好确定,只能一个个的尝试了。我用下面这个命令
[root@chaofeng ~]# ps axjf | grep pts/3 971 58819 58819 58819 ? -1 Ss 0 0:03 \_ sshd: root@pts/3 58819 58821 58821 58821 pts/3 8593 Ss 0 0:00 | \_ -bash 58821 8593 8593 58821 pts/3 8593 S+ 0 0:00 | \_ ssh root@172.20.16.1 7839 9822 9821 7839 pts/2 9821 S+ 0 0:00 | \_ grep --color=auto pts/3
经过一系列的测试,我发现pts/3有一个连接远程主机的子命令,这就是之前我连接的远程主机,是没有问题的。我现在只需要把ssh的这个kill掉即可。
第一列是PPID,第二列是PID,可不能找错了,我们要kill的是PID,那么ssh远程主机的PID号是8593,因此我们kill即可
[root@chaofeng ~]# kill -9 8593
ok,搞定了,我现在已经kill掉卡死的哪个终端的命令了,现在哪个终端可以使用了。