您的位置:首页 > 运维架构 > Linux

每天一个 Linux 命令(43):killall 命令

2018-03-28 00:00 253 查看

[b][b][b][b][b][b][b][b][b][b][b]

[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]

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 viroot     17581 17398  0 17:51 pts/0    00:00:00 vi test.txtroot     17611 17582  0 17:51 pts/1    00:00:00 grep vi[root@localhost ~]# ps -ef|grep viroot     17581 17398  0 17:51 pts/0    00:00:00 vi test.txtroot     17640 17612  0 17:51 pts/2    00:00:00 vi test.logroot     17642 17582  0 17:51 pts/1    00:00:00 grep vi[root@localhost ~]# killall vi[root@localhost ~]# ps -ef|grep viroot     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 viroot     17646 17582  0 17:54 pts/1    00:00:00 viroot     17648 17582  0 17:54 pts/1    00:00:00 viroot     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 viroot     17646 17582  0 17:54 pts/1    00:00:00 viroot     17648 17582  0 17:54 pts/1    00:00:00 viroot     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 viroot     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 WHATroot     pts/0    10.2.0.68        14:58    9:52   0.10s  0.10s -bashroot     pts/1    10.2.0.68        17:51    0.00s  0.02s  0.00s wroot     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 WHATroot     pts/0    10.2.0.68        18:01    0.00s  0.01s  0.00s w[root@localhost ~]#
说明:
运行命令:killall -9 bash 后,所有bash都会被卡掉了,所以当前所有连接丢失了。需要重新连接并登录。Linux云计算免费课程火热开启中,最后2天免费课程抢先中,运维干货内容免费听,点击文末[b][b]“阅读原文”[/b][/b]即可免费听运维课[b]![/b]火速抢先~~~~[b][b]PS:记得查收小编送你的免费大礼包呦~[/b][/b][b]福利 | 一万多套PPT模板等你免费来拿!无条件领取![/b][b][b]免费送 | 1000多套简历模板免费拿,附赠简历制作教程![/b][/b]免费领 | 《Shell脚本 100例》电子书免费拿,运维必备干货~



▼▼点击【阅读原文】,免费听5天Linux运维干货分享课,火热开讲中,速来抢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: