killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。
我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
语法
killall(选项)(参数)
killall [-Z CONTEXT] [-u USER] [ -eIgiqrvw ] [ -SIGNAL ] NAME...
killall -l, --list
killall -V, --version
选项
选项 | 解释 |
---|---|
-e,–exact | 对长名称进行精确匹配 |
-I,–ignore-case | 不区分大小写的进程名称匹配 |
-g,–process-group | 杀死进程组而不是进程 |
-y,–younger-than | 杀死早于指定时间之前的进程 |
-o,–older-than | 杀死晚于指定时间之前的进程 |
-i,–interactive | 交互式杀死进程,杀死进程之前进行确认 |
-l,–list | 列出所有已知的信号名称 |
-q,–quiet | 如果进程没有被杀死,则不输出任何信息 |
-r,–regexp | 将NAME解释为扩展的正则表达式 |
-s,–signal SIGNAL | 发送指定信号替代默认的SIGTERM |
-u,–user USER | 只杀死作为USER运行的进程 |
-v,–verbose | 报告信号是否成功发送 |
-V,–version | 显示版本信息 |
-w,–wait | 等待进程死亡 |
-Z,–context REGEXP | 只杀死具有上下文的进程(必须在其他参数之前) |
参数
进程名称:指定要杀死的进程名称。
实例
实例1:杀死所有同名进程
killall 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
实例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
说明:
运行命令:killall -9 bash
后,所有bash都会被卡掉了,所以当前所有连接丢失了。需要重新连接并登录。
参考链接:
http://man.linuxde.net/killall
http://www.cnblogs.com/peida/archive/2012/12/21/2827366.html