用shell 指令碼寫守護進程

來源:互聯網
上載者:User

最近在做伺服器,因為是全天候運行,伺服器也不是說百分之百穩定,永遠不崩潰永不宕機啥的,所以就算宕機了也不要緊,關鍵是能及時啟動,不能影響玩家體驗,所以

必須得有守護進程守護著,如果伺服器一崩潰,立馬重啟,保證整個業務能繼續運行

我的啟動指令碼 start.sh

#!/bin/shkillall -9 logserversleep 1killall -9 gameservermv logserver.log /mnt/share/log/logserver.log.bakmv gameserver.log /mnt/share/log/gameserver.log.bakulimit -c unlimitednohup ./logserver > logserver.log 2>&1 &sleep 5nohup ./gameserver > gameserver.log 2>&1 &sleep 5echo start success

守護進程指令碼 keep.sh

########################################################################## File Name: keep.sh# Author: ma6174# mail: ma6174@163.com# Created Time: Fri 16 Jan 2015 07:49:46 PM CST##########################################################################!/bin/bashnum=1iNum=1echo $$while(( $num < 5 ))dosn=`ps -ef | grep ./gameserver | grep -v grep |awk '{print $2}'`echo $snif [ "${sn}" = "" ]    #如果為空白,表示進程未啟動thenlet "iNum++"echo $iNumcp gameserver.log /mnt/share/log/gameserver_$iNum.log.bakrm gameserver.lognohup ./gameserver > gameserver.log 2>&1 & #後台啟動進程echo start ok !elseecho runningfisleep 5done


整個流程是

1. ./start.sh

2. ./keep.sh > keep.log 2>&1 &

注意  在 keep.sh 裡面 echo $$ 是輸出當前進程號,因為shell 指令碼啟動之後,是很難去查其進程號,沒有進程號,就很難殺死該shell指令碼啟動對應的

進程 ,從keep.log 找到該進程號,kill -s 9 pid 即可

./keep.sh > keep.log 2>&1 &  這個一定要這麼寫,因為大部分是通過終端串連ubuntu,直接./keep.sh 的話就沒法在後端運行,如果終端關閉,那該指令碼對應的進程也被自動殺死掉,守護進程就不存在了


最近重新試了一次,發現  ./keep.sh > keep.log 2>&1 & 確實可以在後台運行,但是關掉終端之後,收到hup訊號,該指令碼還是中

斷了,起不了效果。用nohup 也提示很多錯誤,keep.sh這個指令碼還是跑不起來,看來不能終端上執行  ./keep.sh > keep.log 2>&1 & 只能在 screen 會話模式, 關於screen 可以見如下文檔

https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

先安裝screen

apt-get install screen 

再建一個會話

screen -dmS Urumchi再看這個會話是事成功
screen -list連上這個會話
screen -r Urumchi

再執行keep.sh指令碼
./keep.sh > keep.log 2>&1 &








相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.