Linux系統中的killall命令用於殺死指定名字的進程(kill processes by name)。我們可以使用kill命令殺死指定進程PID的進程,如果要找到我們需要殺死的進程,我們還需要在之前使用ps等命令再配合grep來查找進程,而killall把這兩個過程合二為一,是一個很好用的命令。
Centos 安裝killall
命令
> yum install -y psmisc
Ubuntu安裝killall
命令
> apt-get install -y psmisc
命令格式
killall [參數] [進程名]
命令功能
用來結束同名的的所有進程
命令參數
- -Z 只殺死擁有scontext 的進程
- -e 要求匹配進程名稱
- -I 忽略小寫
- -g 殺死進程組而不是進程
- -i 交互模式,殺死進程前先詢問用戶
- -l 列出所有的已知信號名稱
- -q 不輸出警告信息
- -s 發送指定的信號
- -v 報告信號是否成功發送
- -w 等待進程死亡
- --help 顯示幫助信息
- --version 顯示版本顯示
殺死所有同名進程
> killall java
向指定進程發送信號
- 后台運行程序:
vi &
- 殺死 vi進程:
killall -TERM vi
或者killall -KILL vi
> vi &
[1] 18729
> killall -TERM vi
[1]+ Stopped vi
> ps -ef | grep vi
root 18729 9713 0 22:26 pts/1 00:00:00 vi
root 18799 9713 0 22:26 pts/1 00:00:00 grep --color=auto vi
> killall -KILL vi
[1]+ Killed vi
> ps -ef | grep vi
root 18827 9713 0 22:26 pts/1 00:00:00 grep --color=auto vi
TERM
信號將終止所有不能捕獲該信號的進程KILL
信號將強制殺死進程
把所有的登錄后的shell給殺掉
> w
> killall -9 bash
運行命令:killall -9 bash 后,所有bash都會被卡掉了,所以當前所有連接丟失了。需要重新連接並登錄。
通過模糊匹配殺死所有進程
服務器運行了
rumenz1
,rumenz2
,rumenz3
進程
> killall -9 rumenz*
強制殺死
rumenz1
,rumenz2
,rumenz3
進程
終止某個用戶所運行的進程
> killall -u deploy
我們只想殺死運行時間超過 6h 的進程
那么可以使用
-o
選項,其中o
代表older
> killall -o 6h
殺死進行時間小於 5h 的進程
> killall -y 5h
-y
選項,其中y
代表younger
忽略大小寫結束進程
killall 命令是大小寫敏感的,所以我們如果寫錯大小寫,將無法正確殺死進程
> killall -I rumenz
關閉命令執行回顯
默認情況下,killall 會告訴你命令執行情況,但是,我們如果不關心它的執行結果,只想讓它靜默執行,只需加上
-q
選項即可,其中q
表示quite
。
列出所有支持的信號
> 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
交互式操作
如果你在殺死多個進程時不太放心,擔心把不該殺死的進程給殺死了,那么你可以使用
-i
選項
> killall -i rumenz
等待直到某個進程被終止
當一個信號被發送至某個進程,如果你想確定該進程已經被殺死了才返回執行結果,可以使用
-w
選項,其中w
代表wait
> killall -w rumenz
原文鏈接:https://rumenz.com/rumenbiji/linux-killall.html
微信公眾號:入門小站