本周開始,新手游進(jìn)行刪檔封測階段,前兩天表現(xiàn)還好,今天更新后出現(xiàn)幾次宕機(jī)行為,比較影響玩家的測試和體驗,我們的服務(wù)器管理系統(tǒng)尚未完善,為了晚上能夠預(yù)防宕機(jī)造成損失,先用一種簡單的方案臨時頂替一下。
實現(xiàn)原理主要是使用linux提供的crontab機(jī)制,定時查詢服務(wù)器進(jìn)程是否存在,如果宕機(jī)則處理我們預(yù)設(shè)的腳本。
首先我們要向crontab加入一個新任務(wù)。
# crontab -e:進(jìn)入編輯狀態(tài),其實就是使用vi編輯。
*/1 * * * * sh /root/monitor.sh
我這里只是簡單的設(shè)置每分鐘調(diào)用一個shell腳本monitor.sh。這里可以配置的更強(qiáng)大,大家可以去搜索一下crontab的教程,網(wǎng)上有很多這類的教程。
這里需要注意的是,很多教程配置command的時候直接使用/root/monitor.sh,我設(shè)置的時候發(fā)現(xiàn)這樣配置不會執(zhí)行shell腳本,前面加上sh后就能執(zhí)行了。
然后我們開始寫monitor.sh這個shell腳本。
#! /bin/sh proc_name="WorldFrame_d"
#進(jìn)程名 proc_num()
#查詢進(jìn)程數(shù)
{
num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
return $num}proc_num number=$?
#獲取進(jìn)程數(shù)量
if [ $number -eq 0 ]
#如果進(jìn)程數(shù)量為0then
#重新啟動服務(wù)器,或者擴(kuò)展其它內(nèi)容。
cd /longwen/server/sbin/linux; ./WorldFrame_d -c 1fi
我這個腳本,只是簡單的檢測了進(jìn)程是否存在,不存在就自動重啟服務(wù)器。
這里其實也可以擴(kuò)展一下,比如對日志文件的處理以及重啟時間等的記錄等等。
需要注意的是在windows編輯sh文件要注意格式問題(CR/LR),否則容易出現(xiàn)sh執(zhí)行錯誤的BUG。
好了,進(jìn)行測試吧,我這里測試OK,記錄一下,希望能幫到其它遇到類似問題的同學(xué)。謝謝閱讀,希望能幫到大家,請繼續(xù)關(guān)注腳本之家,我們會努力分享更多優(yōu)秀的文章。