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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
shell腳本中case條件控制語句的一個(gè)bug分析
在shell腳本中,發(fā)現(xiàn)case語句的一個(gè)問題。就是指定小寫字母[a-z]和大寫字母[A-Z]的這種方法不管用了2013-11-11淺談安裝ORACLE時(shí)在Linux上設(shè)置內(nèi)核參數(shù)的含義
下面小編就為大家?guī)硪黄獪\談安裝ORACLE時(shí)在Linux上設(shè)置內(nèi)核參數(shù)的含義。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03淺析linux下如何用腳本自動(dòng)發(fā)送文本mail郵件
這篇文章主要是介紹如何linux下通過腳本自動(dòng)發(fā)送文本mail郵件,特分享下,方便需要的朋友2013-05-05shell腳本實(shí)現(xiàn)ssh自動(dòng)登錄功能分享
mac下沒有找到好用的類似secureCRT,就自己寫了個(gè)自動(dòng)登錄的腳本,分享一下,如果是新浪的,就基本不用修改代碼就直接能用2014-04-04Linux 使用grep篩選多個(gè)條件及grep常用過濾命令
這篇文章主要介紹了Linux 使用grep篩選多個(gè)條件及grep常用過濾命令,需要的朋友可以參考下2018-07-07