Shell腳本運(yùn)行中的停止方法實(shí)現(xiàn)
Linux系統(tǒng)Shell中提交了一個(gè)腳本,但是需要停止這個(gè)進(jìn)程,如何處理?
方式1
killall file-flume-kafka
說明:killall是一個(gè)命令,不是kill all,file-flume-kafka是腳本名,此方法簡單粗暴。
方式二
ssh $i "ps -ef | grep file-flume-kafka | grep -v grep | awk '{print \$2}' | xargs kill"
ps參數(shù):
-e:顯示所有進(jìn)程
-f:全格式顯示
ps -ef 第二個(gè)參數(shù)就是進(jìn)程ID
grep file-flume-kafka | grep -v grep,file-flume-kafka為腳本名,并去除包含grep的行,避免影響最終結(jié)果正確性
grep aaa | grep -v bbb:可以過濾掉查詢aaa結(jié)果中包含了bbb的行。
grep -v 可以理解為 grep not
舉例:cat test.log | grep "login"|grep -v "deviceType"表示找出test.log中包含login關(guān)鍵字,且沒有deviceType這個(gè)字段的行
awk ‘{print $2}':逐行的讀入,以空格為默認(rèn)分隔符將每行切片,取第二行。
awk參數(shù) -F : 指定輸入文件折分隔符。
比如awk -F : ‘/^root/{print $7}' passwd 表示搜索passwd文件以root關(guān)鍵字開頭的所有行,并輸出該行的第7列。
xargs kill:將前面的運(yùn)行結(jié)果作為kill命令的參數(shù)運(yùn)行。
xargs表示取出前面命令運(yùn)行的結(jié)果,作為后面命令的輸入?yún)?shù)。
xargs可選項(xiàng):-n1,將每一個(gè)參數(shù)傳給后面命令依次執(zhí)行。
特別注意:
ssh $i 是登錄到你執(zhí)行腳本的那臺(tái)虛擬機(jī)上,i代表虛擬機(jī)名字,非本機(jī)登錄需要設(shè)置免密。當(dāng)在本機(jī)上進(jìn)行此操作時(shí),無需執(zhí)行這個(gè)命令。另外后面$2前的轉(zhuǎn)義\也必須省略,無需轉(zhuǎn)義。命令如下:
ps -ef | grep file-flume-kafka | grep -v grep | awk '{print $2}' | xargs kill
具體例子如下:
假設(shè)這個(gè)是我正在運(yùn)行的腳本,我想kill它,但是我不知道他的進(jìn)程號(hào),只知道腳本的名稱。

我的腳本名稱為dws-dwt.sh,根據(jù)過濾條件我查找出腳本有兩個(gè)進(jìn)程號(hào),為什么會(huì)這樣呢?
因?yàn)槟悴檎疫M(jìn)程時(shí)用到了grep命令,而這個(gè)命令執(zhí)行的時(shí)候帶有你查找的進(jìn)程參數(shù),同時(shí)這也是一個(gè)進(jìn)程。
例如 這條命令 ps -ef | grep dws-dwt.sh 其實(shí)是分兩步執(zhí)行的 先執(zhí)行ps -ef 再執(zhí)行 grep dws-dwt.sh 這個(gè)命令本身執(zhí)行的時(shí)候也是一個(gè)進(jìn)程,并把也帶有dws-dwt.sh。
所以你要查找dws-dwt.sh進(jìn)程,需要把 grep dws-dwt.sh這個(gè)進(jìn)程過濾掉,才是最后的結(jié)果,怎么過濾呢,肯定不能用dws-dwt.sh做關(guān)鍵字,只能用grep做關(guān)鍵字
執(zhí)行結(jié)果有兩個(gè)進(jìn)程號(hào):
ps -ef | grep dws-dwt.sh

最終結(jié)果,得到進(jìn)程號(hào):

#執(zhí)行命令停止進(jìn)程
ps -ef | grep dws-dwt.sh | grep -v grep | awk '{print $2}' | xargs kill
到此這篇關(guān)于Shell腳本運(yùn)行中的停止方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Shell腳本運(yùn)行中的停止方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
bash shell和dash shell的區(qū)別詳解
本文主要介紹了bash shell和dash shell的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
shell腳本快速刪除服務(wù)器指定目錄下文件(最新方法)
這篇文章主要介紹了shell腳本快速刪除服務(wù)器指定目錄下文件(最新方法),包括刪除4天前的文件及只刪除指定文件,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
shell腳本中case條件控制語句的一個(gè)bug分析
在shell腳本中,發(fā)現(xiàn)case語句的一個(gè)問題。就是指定小寫字母[a-z]和大寫字母[A-Z]的這種方法不管用了2013-11-11
使用Linux的alternatives命令替換選擇軟件的版本方法
下面小編就為大家?guī)硪黄褂肔inux的alternatives命令替換選擇軟件的版本方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
shell編程中for循環(huán)語句的實(shí)現(xiàn)過程及案例
Bash?Shell中主要提供了三種循環(huán)方式:for、while和until,下面這篇文章主要給大家介紹了關(guān)于shell編程中for循環(huán)語句的實(shí)現(xiàn)過程及案例,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
Linux下使用shell腳本自動(dòng)執(zhí)行腳本文件
這篇文章主要介紹了Linux下使用shell腳本自動(dòng)執(zhí)行腳本文件的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12
Shell中使用scp命令實(shí)現(xiàn)文件上傳代碼
這篇文章主要介紹了Shell中使用scp命令實(shí)現(xiàn)文件上傳代碼,本文講解使用scp命令實(shí)現(xiàn)名登錄上傳文件,需要的朋友可以參考下2015-04-04

