基础命令学习目录首页html
原文连接:https://blog.csdn.net/tanga842428/article/details/52474250shell
Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)。咱们能够使用kill命令杀死指定进程PID的进程,若是要找到咱们须要杀死的进程,咱们还须要在以前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。centos
1.命令格式:bash
killall[参数][进程名]post
2.命令功能:学习
用来结束同名的全部进程url
3.命令参数:centos7
-Z 只杀死拥有scontext的进程.net
-e 要求匹配进程名称htm
-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 ~]#