基礎命令學習目錄首頁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 ~]#