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