Shell命令批量殺死進程的方法實現(xiàn)
前言
在Linux操作系統(tǒng)中,一般常用的殺死進程的命令是 kill、pkill、killall,根據(jù)殺死單個進程拓展至批量殺死進程。
1)查看指定名稱的進程,如下查看運行 kettle 程序的進程:
ps -ef | grep kettle | grep -v grep
結(jié)果如下圖
2)根據(jù)進程號(PID)殺死進程:第二列顯示的就是進程號
kill 命令殺死指定進程PID的進程
kill PID
3)強制殺死進程。(有些進程可能殺不死,就加個-9
參數(shù),強制將其殺死)
kill -9 PID
4)殺死多個進程,在命令 kill -9 后面跟多個進程的PID號即可。(進程號之間以空格隔開)
kill -9 PID1 PID2 PID3 ...
1、強制殺死某個端口號下的所有進程
eg:殺死tcp端口8080下的所有進程
sudo fuser -k -n tcp 8080?
2、殺死某個命令下的所有進程
實例1:使用 killall 命令殺死所有python3 執(zhí)行的程序: killall [參數(shù)] [進程名]
killall 命令用于殺死指定名字的進程(kill processes by name)
sudo killall python3
注意:一般情況下,不會采用該方法去批量殺死進程,因為此方法可能會造成誤殺。
實例2:使用 pkill 命令殺死所有python3執(zhí)行的程序: pkill [參數(shù)] [進程名]
pkill 命令與 killall 命令相同,同樣用于殺死指定名字的進程(kill processes by name)
sudo pkill python3
3、殺死進程名中含有xxx字段的所有進程
實例:殺死進程名中含 ‘kettle’ 字段的所有進程
ps -def |grep 'kettle' |cut -c 9-15| xargs kill -9
對上述方法中的三個子命令詳解:
1)ps -ef |grep 'kettle'
這個命令會查出所有進程名字中含有 “kettle” 字段的進程,如下圖所示:
2)cut 9-15
從輸出結(jié)果的每行字符串中截取第9-15個字符, 剛好就是我們所需的進程號,如下圖所示:
3)xargs kill -9
命令 xargs 是將前面提取到的所有的進程號,作為參數(shù)傳給命令 kill -9 , 這樣我們就能殺死所有的進程。( xargs kill -9 中的 xargs 命令是用來把前面命令的輸出結(jié)果(PID)作為 kill -9 命令的參數(shù),并執(zhí)行該令)
如下圖所示:
進階優(yōu)化:
ps -ef | grep LOCAL=NO | grep -v grep | cut -c 9-15 | xargs kill -9
注意:(參照方法三中的批量殺死進程的執(zhí)行結(jié)果)使用 ps -ef | grep xxx 命令根據(jù)進程名中的字段查找進程ID的時候,同時會包含含有關(guān)鍵字《grep》的進程。如下圖所示:
解決辦法: grep -v grep 是在列出的進程中去除含有關(guān)鍵字 grep 的進程。
4、ps -ef|grep kettle | grep -v grep | awk '{print "kill -9 " $2}' |sh
命令詳解:
1)命令 grep -v grep 是過濾掉 grep 命令本身的進程;
2)$2表示第2列,即進程號PID;
3)命令 ps -ef | grep kettle | grep -v grep|awk '{print "kill -9 "$2}' 列出了所有要殺死的進程,并將之打印在了屏幕上。如下圖所示:
4)命令 ps -ef|grep kettle |grep -v grep|awk '{print "kill -9 " $2}' |sh 與3相比,其實是在3命令后面加上了 |sh ,表示執(zhí)行打印出來的這些命令,進而達到殺死進程名中包含xxx字段的進程。
5、ps -ef | grep kettle | grep -v grep | awk '{print $2}' | xargs kill -9
1)命令 awk '{print $2}' 表示輸出第二列的進程PID。如下圖所示:
6、執(zhí)行命令,將需要殺死的進程號賦值給變量,再使用命令 kill -9 殺死他們
pidlist=`ps -ef |grep kettle |grep -v grep|awk '{print $2}'` kill -9 $pidlist
將進程號被賦值的變量值打印出來:
到此這篇關(guān)于Shell命令批量殺死進程的方法實現(xiàn)的文章就介紹到這了,更多相關(guān)Shell批量殺死進程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell之function函數(shù)的定義及調(diào)用示例
本文主要介紹了Shell之function函數(shù)的定義及調(diào)用示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Shell alias給命令設(shè)置別名的實現(xiàn)方法
這篇文章主要介紹了Shell alias給命令設(shè)置別名的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01shell腳本快速刪除服務(wù)器指定目錄下文件(最新方法)
這篇文章主要介紹了shell腳本快速刪除服務(wù)器指定目錄下文件(最新方法),包括刪除4天前的文件及只刪除指定文件,本文給大家介紹的非常詳細,需要的朋友可以參考下2023-07-07shell判斷文件,目錄是否存在或者具有權(quán)限的代碼
因shell還不是很熟練,所以做此筆記,方便查看,學(xué)習(xí)shell的朋友可以參考下2013-06-06