• killall命令详解


      

    基础命令学习目录首页

    原文链接:https://blog.csdn.net/tanga842428/article/details/52474250

    Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。

    1.命令格式:

    killall[参数][进程名]

    2.命令功能:

    用来结束同名的所有进程

    3.命令参数:

    -Z 只杀死拥有scontext的进程

    -e 要求匹配进程名称

    -I 忽略小写

    -g 杀死进程组而不是进程

    -i 交互模式,杀死进程前先询问用户

    -l 列出所有的已知信号名称

    -q 不输出警告信息

    -s 发送指定的信号

    -v 报告信号是否成功发送

    -w 等待进程死亡

    --help 显示帮助信息

    --version 显示版本显示

    4.使用实例:

    实例1:杀死所有同名进程

    命令:

    killall vi

    输出:

    [root@localhost ~]# ps -ef|grep vi

    root     17581 17398  0 17:51 pts/0    00:00:00 vi test.txt

    root     17611 17582  0 17:51 pts/1    00:00:00 grep vi

    [root@localhost ~]# ps -ef|grep vi

    root     17581 17398  0 17:51 pts/0    00:00:00 vi test.txt

    root     17640 17612  0 17:51 pts/2    00:00:00 vi test.log

    root     17642 17582  0 17:51 pts/1    00:00:00 grep vi

    [root@localhost ~]# killall vi

    [root@localhost ~]# ps -ef|grep vi

    root     17645 17582  0 17:52 pts/1    00:00:00 grep vi

    说明:

    实例2:向进程发送指定信号

    命令:

    后台运行程序:vi &

    杀死 vi进程:killall -TERM vi  或者  killall -KILL vi

    输出:

    [root@localhost ~]# vi & 

    [1] 17646[root@localhost ~]# killall -TERM vi

    [1]+  Stopped                 vi

    [root@localhost ~]# vi & 

    [2] 17648[root@localhost ~]# ps -ef|grep vi

    root     17646 17582  0 17:54 pts/1    00:00:00 vi

    root     17648 17582  0 17:54 pts/1    00:00:00 vi

    root     17650 17582  0 17:55 pts/1    00:00:00 grep vi

    [2]+  Stopped                 vi

    [root@localhost ~]# killall -TERM vi

    [root@localhost ~]# ps -ef|grep vi

    root     17646 17582  0 17:54 pts/1    00:00:00 vi

    root     17648 17582  0 17:54 pts/1    00:00:00 vi

    root     17653 17582  0 17:55 pts/1    00:00:00 grep vi

    [root@localhost ~]# killall -KILL vi

    [1]-  已杀死               vi

    [2]+  已杀死               vi

    [root@localhost ~]# ps -ef|grep vi

    root     17656 17582  0 17:56 pts/1    00:00:00 grep vi

    [root@localhost ~]#

    说明:

    实例3:把所有的登录后的shell给杀掉

    命令:

    killall -9 bash

    输出:

    [root@localhost ~]# w

     18:01:03 up 41 days, 18:53,  3 users,  load average: 0.00, 0.00, 0.00USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

    root     pts/0    10.2.0.68        14:58    9:52   0.10s  0.10s -bash

    root     pts/1    10.2.0.68        17:51    0.00s  0.02s  0.00s w

    root     pts/2    10.2.0.68        17:51    9:24   0.01s  0.01s -bash

    [root@localhost ~]# killall -9 bash

    [root@localhost ~]# w

     18:01:48 up 41 days, 18:54,  1 user,  load average: 0.07, 0.02, 0.00USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

    root     pts/0    10.2.0.68        18:01    0.00s  0.01s  0.00s w

    [root@localhost ~]#

    说明:

    运行命令:killall -9 bash 后,所有bash都会被卡掉了,所以当前所有连接丢失了。需要重新连接并登录。

    centos7精简安装后,使用中发现没有killall命令。

    可以通过以下命令解决:

    yum install psmisc -y

    Psmisc软件包包含三个帮助管理/proc目录的程序。

    格式:killall -l

    列出支持的信号。

    示例一

    [root@jfht ~]# killall -l
    HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
    STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
    UNUSED
    [root@jfht ~]#

    示例二

    [root@jfht ~]# killall tail
    [root@jfht ~]# killall tail
    tail: no process killed
    [root@jfht ~]#

    示例三

    这个例子展示怎样把所有的登录后的shell给杀掉,因为有些bash实际上已经没有终端相连接了。

    [root@jfht ~]# w
     21:56:35 up 452 days,  5:16,  3 users,  load average: 0.05, 0.06, 0.01
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/1    220.112.87.62    21:53    0.00s  0.02s  0.00s w
    root     pts/9    220.112.87.62    21:53    2:44   0.02s  0.02s -bash
    root     pts/10   220.112.87.62    21:53    3:13   0.01s  0.01s -bash
    [root@jfht ~]# killall -9 bash
    此bash也被·卡掉了,所以连接丢失了。现在重新连接并登录。


    Last login: Mon Apr  4 21:53:23 2011 from 220.112.87.62
    [root@jfht ~]# w
     21:56:52 up 452 days,  5:16,  1 user,  load average: 0.28, 0.10, 0.02
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/1    220.112.87.62    21:56    0.00s  0.01s  0.00s w
    [root@jfht ~]#

  • 相关阅读:
    arcgis10.2转shp文件中文乱码问题解决方案
    Android Context作为参数传递this
    andriod inputbox
    andriod inputType
    《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)(转)
    终于理解了什么是LGPL
    产品经理如何与强势的技术沟通? 技术比较有资历,会以技术无法实现等方面的原因拒绝处理产品提出的需求。 你们是否遇到这样的技术? 产品懂技术的话,是不是会好一些,因为可以和技术说“行话”了,并且产品懂技术就不会被忽悠了。
    Core Dump总结
    LIBRARY_PATH是编译时候用的,LD_LIBRARY_PATH是程序运行是使用的
    如何禁止C++默认成员函数
  • 原文地址:https://www.cnblogs.com/machangwei-8/p/10391585.html
Copyright © 2020-2023  润新知