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

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

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

背景

需要一個(gè)shell 腳本檢測一下進(jìn)程是否存在,如果存在則直接kill 掉

問題處理

查看進(jìn)程id

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

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

知識點(diǎn)補(bǔ)充

shell腳本在執(zhí)行時(shí),會(huì)啟動(dòng)子shell的進(jìn)程。作為主shell的子進(jìn)程,子shell將shell腳本中的命令作為批處理運(yùn)行(因此稱為“批處理進(jìn)程”)。

在bash中,子shell進(jìn)程的PID存儲(chǔ)在一個(gè)特殊的變量‘$$’中。這個(gè)變量只讀,你不可以在腳本中修改它。

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

echo $PPID
echo UID

解決方法

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

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

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

腳本偽代碼供參考

# 檢查 node_exporter 進(jìn)程是否存在,存在則直接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腳本判斷進(jìn)程是否存在的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Shell判斷進(jìn)程存在內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論