
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5765 54d463be-8e91-2dee-dedb-b68131a5f0ec
78 lines
1.5 KiB
Bash
78 lines
1.5 KiB
Bash
#!/bin/sh
|
||
|
||
# Athena自動再起動スクリプト
|
||
#
|
||
# [USAGE] ./start
|
||
#
|
||
# 既にAthenaを起動した状態では実行しないで下さい。
|
||
# サーバーの状態を確認するスクリプトが動作するので、シェルに戻りません。
|
||
# Athenaを止めたいときは Ctrl+C で終了してください。
|
||
#
|
||
# もしくは ./start & としてバックグラウンドで起動すると
|
||
# シェルに戻ってきますが、サーバーの停止が少し面倒です。
|
||
|
||
L_SRV=./bin/login-server
|
||
C_SRV=./bin/char-server
|
||
M_SRV=./bin/map-server
|
||
|
||
process_check() {
|
||
# check login server
|
||
if [ ! -f ${L_SRV}.pid ]; then
|
||
login=0
|
||
else
|
||
login=`cat ${L_SRV}.pid`
|
||
login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l)
|
||
fi
|
||
|
||
# check char server
|
||
if [ ! -f ${C_SRV}.pid ]; then
|
||
char=0
|
||
else
|
||
char=`cat ${C_SRV}.pid`
|
||
char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l)
|
||
fi
|
||
|
||
# check map server
|
||
if [ ! -f ${M_SRV}.pid ]; then
|
||
map=0
|
||
else
|
||
map=`cat ${M_SRV}.pid`
|
||
map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l)
|
||
fi
|
||
|
||
# echo "check: ${login} ${char} ${map}"
|
||
echo `expr ${login} + ${char} + ${map}`
|
||
}
|
||
|
||
if [ `process_check` -ne 0 ]; then
|
||
echo "Athena is already running..."
|
||
else
|
||
./athena-start start
|
||
sleep 30
|
||
|
||
while true
|
||
do
|
||
if [ `process_check` -lt 3 ]; then
|
||
printf "Error:"
|
||
date
|
||
sleep 10
|
||
printf "Checking:"
|
||
date
|
||
if [ `process_check` -lt 3 ]; then
|
||
printf "Error Confirmation:"
|
||
date
|
||
printf "Restoration:"
|
||
date
|
||
./athena-start restart
|
||
else
|
||
printf "Check Miss Sorry:"
|
||
date
|
||
fi
|
||
#else
|
||
# printf "Check OK:"
|
||
# date
|
||
fi
|
||
sleep 10
|
||
done
|
||
fi
|