Linux下如何杀死终端

By | 2020年12月25日

1、首先是使用who命令查看当前有多少个终端登陆了Linux系统

[root@:vg_adn_tidbCkhsTest /usr/local/redis/bin]#who
mobdev   pts/1        2019-01-14 05:37 (ec2-18-136-70-46.ap-southeast-1.compute.amazonaws.com)
mobdev   pts/2        2019-01-15 03:01 (ec2-18-136-70-46.ap-southeast-1.compute.amazonaws.com)

2、接下来查看自己的当前终端是多少

[root@:vg_adn_tidbCkhsTest /usr/local/redis/bin]#tty
/dev/pts/1

3、可以看到自己的终端名称是/dev/pts/1。现在我们要杀死pts/2这个用户终端,先取出这个终端的进程号

[root@:vg_adn_tidbCkhsTest /usr/local/redis/bin]#ps -t /dev/pts/2
  PID TTY          TIME CMD
 9360 pts/2    00:00:00 bash

4、我们看到进程号是9260,现在把它kill掉

[root@:vg_adn_tidbCkhsTest /usr/local/redis/bin]#kill -9 9360
[root@:vg_adn_tidbCkhsTest /usr/local/redis/bin]#ps -t /dev/pts/2
error: TTY could not be found

当我们kill掉的时候,可以看到已经没有这个tty终端了。注意普通用户是没有权限执行此操作的。

One thought on “Linux下如何杀死终端

  1. junchol Post author

    Linux pkill命令:终止进程,按终端号踢出用户

    Linux终止特定的一类进程(killall命令)
    Linux工作管理 >

    《Linux就该这么学》是一本基于最新Linux系统编写的入门必读书籍,内容面向零基础读者,由浅入深渐进式教学,销量保持国内第一,年销售量预期超过10万本。点此免费在线阅读。
    当作于管理进程时,pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程,该命令的基本格式如下:
    [root@localhost ~]# pkill [信号] 进程名
    表 1 罗列了此命令常用的信号及其含义。

    表 1 pkill 命令常用信号及其含义信号编号信号名含义0EXIT 程序退出时收到该信息。1HUP挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。2INT表示结束进程,但并不是强制性的,常用的 “Ctrl+C” 组合键发出就是一个 kill -2 的信号。3QUIT退出。9KILL杀死进程,即强制结束进程。11SEGV 段错误。15TERM正常结束进程,是 kill 命令的默认信号。
    【例 1】
    [root@localhost ~]# pkill -9 httpd  <–按名称强制杀死 httpd 进程
    [root@localhost ~]# pstree -p | grep httpd  <– 查看 apache 进程,发现没有了
    [root@localhost ~]# service httpd start   <–重新启动 apache 进程
    Starting httpd: httpd: Could not reliably determine the server’s fully qualified domain me, using 127.0.0.1 for ServerName
    [OK]
    [root@localhost ~]# pstree -p | grep httpd <– 再次查看,apache 进程重新启动
           – httpd (11157) -+-httpd(11159)
           |              |-httpd(11160)
           |              |-httpd(11161)
           |              |-httpd(11162)
           |              |-httpd(11163)
           |              |-httpd(11164)
           |              |-httpd(11165)
           |              |-httpd(11166)

    pkill命令踢出登陆用户

    除此之外,pkill 还有一个更重要的功能,即按照终端号来踢出用户登录,此时的 pkill 命令的基本格式如下:
    [root@localhost ~]# pkill [-t 终端号] 进程名
    [-t 终端号] 选项用于按照终端号踢出用户;

    学习 killall 命令时,不知道大家发现没有,通过 killall 命令杀死 sshd 进程的方式来踢出用户,非常容易误杀死进程,要么会把 sshd 服务杀死,要么会把自己的登录终端杀死。

    所以,不管是使用 kill 命令按照 PID 杀死登录进程,还是使用 killall 命令按照进程名杀死登录进程,都是非常容易误杀死进程的,而使用 pkill 命令则不会,举个例子:

    [root@localhost ~]# w
    #使用w命令查询本机已经登录的用户
    20:06:34 up 28 min, 3 users, load average: 0.00, 0.00, 0.00
    USER  TTY           FROM LOGIN@  IDLE  JCPU  PCPU WHAT
    root ttyl              -  19:47 18:52 0.01s 0.01s -bash
    root pts/0 192.168.0.100  19:47 0.00s 0.09s 0.04s w
    root pts/1 192.168.0.100  19:51 14:56 0.02s 0.02s -bash
    #当前主机已经登录了三个root用户,一个是本地终端ttyl登录,另外两个是从192.168.0.100登陆的远程登录
    [root@localhost ~]# pkill -9 -t pts/1
    #强制杀死从pts/1虚拟终端登陆的进程
    [root@localhost ~]# w
    20:09:09 up 30 min, 2 users, load average: 0.00, 0.00,0.00
    USER   TTY          FROM LOGIN@  IDLE  JCPU  PCPU WHAT
    root  ttyl             -  19:47 21:27 0.01s 0.01s -bash
    root pts/0 192.168.0.100  19:47 0.00s 0.06s 0.00s w
    #虚拟终端pts/1的登录进程已经被杀死了
    
    Reply

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注