每天一個 Linux 命令:killall 命令

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 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 都會被卡掉了,所以當前所有連接丟失了。需要重新連接並登錄。

轉自:www.cnblogs.com/peida/archive/2012/12/21/2827366.html

****推薦關注「算法愛好者」,修煉編程內功

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/FBcZSABg483ODwqK11_rlA