這篇文章主要介紹“l(fā)inux下進(jìn)程監(jiān)控的shell腳本分享”,在日常操作中,相信很多人在linux下進(jìn)程監(jiān)控的shell腳本分享問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”linux下進(jìn)程監(jiān)控的shell腳本分享”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、南州晴隆ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的南州晴隆網(wǎng)站制作公司為確保php頁(yè)面在后臺(tái)運(yùn)行,寫了一個(gè)監(jiān)控腳本,假設(shè)程序異常退出,那么可以自動(dòng)重啟。
shell腳本/usr/local/scripts/receve.sh內(nèi)容:
#!/bin/bash #funtion:keep receve.php running PHP="/usr/local/php5/bin/php" PROGRAM="receve.php" #start dameo $PHP /home/httpd/$PROGRAM >>/usr/local/scripts/phpshell/receve.out & chpid="$!"; echo "$chpid" > /usr/local/scripts/phpshell/receve.sid echo "child pid is $chpid" echo "status is $?" while [ 1 ] do wait $chpid exitstatus="$?" echo "child pid=$chpid is gone, $exitstatus" >>/usr/local/scripts/phpshell/receve.php_error.log echo `date` >> /usr/local/scripts/phpshell/receve.php_error.log echo "**************************" >>/usr/local/scripts/phpshell/receve.php_error.log sleep 10 $PHP /home/httpd/$PROGRAM >> /usr/local/scripts/phpshell/receve.out & chpid="$!"; echo "$chpid" > /usr/local/scripts/phpshell/receve.sid echo "next child pid is $chpid" echo "next status is $?" done
需要保證監(jiān)控腳本正常運(yùn)行,在每天凌晨自動(dòng)重啟腳本/usr/local/scripts/restart_r.sh,寫入crontab:
#!/bin/bash echo "" >/tmp/receve_pid.txt /bin/ps ax | /bin/grep "receve.sh" | /bin/grep -v "grep" | /bin/awk '{print $1}' >/tmp/receve_pid.txt no1pid=`cat /tmp/receve_pid.txt | sort -r` no2pid=`cat /usr/local/scripts/phpshell/receve.sid | sort -r` if [ -z $no1pid ];then echo "receve.sh pid is null, receve.sh is not running." else /bin/kill -9 "$no1pid" echo "receve.sh killed" fi sleep 3 if [ -z $no2pid ];then echo "receve.php pid is null, receve.php is not running." else /bin/kill -9 "$no2pid" echo "receve.php killed" fi rm -rf /usr/local/scripts/phpshell/receve.sid sleep 3 /usr/local/scripts/receve.sh > /dev/null &
crontab:
代碼如下:
#restart receve.sh
10 00 * * * /usr/local/scripts/restart_r.sh
注意:腳本命名要避免重復(fù),避免自己kill掉自己的進(jìn)程。
到此,關(guān)于“l(fā)inux下進(jìn)程監(jiān)控的shell腳本分享”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!