#!/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