killall命令
killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。
我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
语法
killall(选项)(参数)
选项
-e:对长名称进行精确匹配; -l:忽略大小写的不同; -p:杀死进程所属的进程组; -i:交互式杀死进程,杀死进程前需要进行确认; -l:打印所有已知信号列表; -q:如果没有进程被杀死。则不输出任何信息; -r:使用正规表达式匹配要杀死的进程名称; -s:用指定的进程号代替默认信号“SIGTERM”; -u:杀死指定用户的进程。参数
进程名称:指定要杀死的进程名称。
常用范例
实例一:杀死所有同名进程
命令:
killallvi
输出:
[root@localhost~]#ps-ef|grepvi
root1758117398017:51pts/000:00:00vitest.txt
root176111758:51pts/100:00:00grepvi
[root@localhost~]#ps-ef|grepvi
root1758117398017:51pts/000:00:00vitest.txt
root176401761:51pts/200:00:00vitest.log
root176421758:51pts/100:00:00grepvi
[root@localhost~]#killallvi
[root@localhost~]#ps-ef|grepvi
root176451758:52pts/100:00:00grepvi
说明:
实例二:向进程发送指定信号
命令:
后台运行程序:vi&
杀死vi进程:killall-TERMvi或者killall-KILLvi
输出:
[root@localhost~]#vi&
[1]17646[root@localhost~]#killall-TERMvi
[1]+Stoppedvi
[root@localhost~]#vi&
[2]17648[root@localhost~]#ps-ef|grepvi
root176461758:54pts/100:00:00vi
root176481758:54pts/100:00:00vi
root176501758:55pts/100:00:00grepvi
[2]+Stoppedvi
[root@localhost~]#killall-TERMvi
[root@localhost~]#ps-ef|grepvi
root176461758:54pts/100:00:00vi
root176481758:54pts/100:00:00vi
root176531758:55pts/100:00:00grepvi
[root@localhost~]#killall-KILLvi
[1]-已杀死vi
[2]+已杀死vi
[root@localhost~]#ps-ef|grepvi
root176561758:56pts/100:00:00grepvi
[root@localhost~]#
说明:
实例三:把所有的登录后的shell给杀掉
命令:
killall-9bash
输出:
[root@localhost~]#w
18:01:03up41days,18:53,3users,loadaverage:0.00,0.00,0.00USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT
rootpts/010.2.0.6814:589:520.10s0.10s-bash
rootpts/110.2.0.6817:510.00s0.02s0.00sw
rootpts/210.2.0.6817:519:240.01s0.01s-bash
[root@localhost~]#killall-9bash
[root@localhost~]#w
18:01:48up41days,18:54,1user,loadaverage:0.07,0.02,0.00USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT
rootpts/010.2.0.6818:010.00s0.01s0.00sw
[root@localhost~]#
说明:
运行命令:killall-9bash后,所有bash都会被卡掉了,所以当前所有连接丢失了。需要重新连接并登录。