欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell腳本判斷進程是否存在的實現(xiàn)示例

 更新時間:2023年06月20日 10:05:51   作者:獨步秋風(fēng)  
本文主要介紹了Shell腳本判斷進程是否存在的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

背景

需要一個shell 腳本檢測一下進程是否存在,如果存在則直接kill 掉

問題處理

查看進程id

ps -ef|grep node_exporter|grep -v grep|awk '{print $2}'

如果應(yīng)用進程是存在的且只有一個進程,在腳本中打印會發(fā)現(xiàn)有三個進程id,其中有兩個進程是用不到的,且多出來的兩個進程id和當(dāng)前腳本子進程相關(guān),為什么會有兩個無關(guān)的進程id呢?理論上來講主機上只有這一個關(guān)鍵詞的進程,排查發(fā)現(xiàn)是因為定義的腳本名稱包含了node_exporter所導(dǎo)致。

知識點補充

shell腳本在執(zhí)行時,會啟動子shell的進程。作為主shell的子進程,子shell將shell腳本中的命令作為批處理運行(因此稱為“批處理進程”)。

在bash中,子shell進程的PID存儲在一個特殊的變量‘$$’中。這個變量只讀,你不可以在腳本中修改它。

除了$$, bash shell還會導(dǎo)出其他的只讀變量。比如,PPID存儲子shell父進程的ID(也就是主shell)。UID存儲了執(zhí)行這個腳本的當(dāng)前用戶ID

echo $PPID
echo UID

解決方法

優(yōu)化獲取進程id方式

ps -ef|grep node_exporter|grep -v grep|grep -v $$|awk '{print $2}'

這樣獲得的進程就會過濾掉當(dāng)前腳本的進程,問題處理

腳本偽代碼供參考

# 檢查 node_exporter 進程是否存在,存在則直接kill 掉
check_node_exporter_status(){
echo "check node exporter status start "
node_exporer_proc=`ps -ef|grep node_exporter|grep -v grep|grep -v $$|awk '{print $2}'`
if [[ $node_exporer_proc != "" ]]; then
echo "node_exporter process id is $node_exporer_proc"
sudo kill $node_exporer_proc
fi
echo "check node exporter status end "
}

到此這篇關(guān)于Shell腳本判斷進程是否存在的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Shell判斷進程存在內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論