From e806cbbaa63804c9f4ff2a82e20789d784a93b11 Mon Sep 17 00:00:00 2001 From: DracoRPG Date: Thu, 23 Aug 2007 22:05:28 +0000 Subject: Updated Unix start scripts from Shazeya, please read changelog for details git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11070 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 4 + athena-start | 302 +++++++++------------------------------------------- start | 112 ++++++------------- 3 files changed, 89 insertions(+), 329 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 54561f80d..3aee110e2 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,10 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. +2007/08/23 + * Updated athena-start & start to Shazeya's hack. Please test them! [DracoRPG] + - Simplest way is to run ./start that is equivalent to Windows runserver_sql.bat + - To run TXT instead, edit the beginning of athena-start with proper filenames 2007/08/22 * Fixed Dragon Fear's status change selection and duration. * Fixed Metamorphosis not displaying a speed-change update on the client. diff --git a/athena-start b/athena-start index 7a69be4c1..e9d3865f1 100644 --- a/athena-start +++ b/athena-start @@ -1,276 +1,74 @@ #!/bin/sh # athena starting script by rowla - -# chkconfig: 345 99 01 -# description: start and stop athena service +# modified by shazeya@syafi.com (NL101541) PATH=./:$PATH -L_SRV=./bin/login-server -C_SRV=./bin/char-server -M_SRV=./bin/map-server -L_SRV_C=./conf/login_athena.conf -C_SRV_C=./conf/char_athena.conf -C_SRV_C2=./conf/inter_athena.conf -M_SRV_C=./conf/map_athena.conf -M_SRV_C2=./conf/battle_athena.conf -M_SRV_C3=./conf/atcommand_athena.conf -M_SRV_C4=./conf/script_athena.conf -M_SRV_C5=./conf/msg_athena.conf +L_SRV=login-server_sql +C_SRV=char-server_sql +M_SRV=map-server_sql print_start() { -# more << EOF +# more << EOF echo "Athena Starting..." -echo " (c) 2003 Athena Project." -echo " URL:http://project-yare.de/" -echo "" -echo "Debug informations will appear," -echo "since this is a test release." +echo " (c) 2003 Athena Project" +echo " modified by shazeya@syafi.com" echo "" +#echo "Debug informations will appear," +#echo "since this is a test release." +#echo "" echo "checking..." #EOF } -check_account() { - if [ ! -d ./save ]; then - mkdir ./save - fi - - if [ ! -d ./log ]; then - mkdir ./log - fi - - if [ ! -d ./conf/import ]; then - mkdir ./conf/import - fi - - if [ ! -f ./save/account.txt ]; then - i=0 - while [ $i -le 4 ]; - do - echo -e "$i\ts`expr $i + 1`\tp`expr $i + 1`\t-\tS\t0\t0\r" >> save/account.txt - i=`expr $i + 1` - done - fi - - if [ ! -f ./save/athena.txt ]; then - echo -n > save/athena.txt - fi - - if [ ! -f ./save/bank.txt ]; then - echo -n > save/bank.txt - fi - - if [ ! -f ./save/guild.txt ]; then - echo -n > save/guild.txt - fi - - if [ ! -f ./save/party.txt ]; then - echo -n > save/party.txt - fi - - if [ ! -f ./save/pet.txt ]; then - echo -n > save/pet.txt - fi - - if [ ! -f ./save/storage.txt ]; then - echo -n > save/storage.txt - fi - - if [ ! -f ./save/castle.txt ]; then - i=0 - while [ $i -le 19 ]; - do - echo -e "$i,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r" >> save/castle.txt - i=`expr $i + 1` - done - fi - - if [ ! -f ./conf/import/atcommand_conf.txt ]; then - echo -n > conf/import/atcommand_conf.txt - fi - - if [ ! -f ./conf/import/battle_conf.txt ]; then - echo -n > conf/import/battle_conf.txt - fi - - if [ ! -f ./conf/import/char_conf.txt ]; then - echo -n > conf/import/char_conf.txt - fi - - if [ ! -f ./conf/import/inter_conf.txt ]; then - echo -n > conf/import/inter_conf.txt - fi - - if [ ! -f ./conf/import/login_conf.txt ]; then - echo -n > conf/import/login_conf.txt - fi - - if [ ! -f ./conf/import/map_conf.txt ]; then - echo -n > conf/import/map_conf.txt - fi -} +#check_account() { +# if [ ! -f ./save/account.txt ]; then +# echo "0 s1 p1 - S 0" > save/account.txt +# echo "1 s2 p2 - S 0" >>save/account.txt +# echo "2 s3 p3 - S 0" >>save/account.txt +# echo "3 s4 p4 - S 0" >>save/account.txt +# echo "4 s5 p5 - S 0" >>save/account.txt +# fi +#} check_files() { - for i in ${L_SRV} ${C_SRV} ${M_SRV} ${L_SRV_C} ${C_SRV_C} ${C_SRV_C2} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5} - do - if [ ! -f ./$i ]; then - echo "$i does not exist, or can't run." - echo "Stoped, Check your compile or configuration file." - exit 1; - fi - done - -# more << EOF -echo "Check done." -echo "Looks good, have a nice athena!" + for i in ${L_SRV} ${C_SRV} ${M_SRV} + do + if [ ! -f ./$i ]; then + echo "$i does not exist, or can't run." + echo "Stop. Check your compile." + exit 1; + fi + done + +# more << EOF +echo "Check complete." +echo "Looks good, a nice Athena!" #EOF } - -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}` -} + case $1 in - 'start') - if [ `process_check` -eq 0 ]; then - print_start - check_account - check_files + 'start') + print_start +# check_account + check_files - exec ${L_SRV} ${L_SRV_C}& -# exec ${C_SRV} ${C_SRV_C} ${C_SRV_C2} > /dev/null& -# exec ${M_SRV} ${M_SRV_C} ${M_SRV_C2} > /dev/null& - exec ${C_SRV} ${C_SRV_C} ${C_SRV_C2}& -# exec nice -n -20 ${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5}& - exec ${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5}& + exec ./${L_SRV}& + exec ./${C_SRV}& + exec ./${M_SRV}& - echo "Now Started Athena." - else - echo "Athena is already running..." - fi + echo "Now Started Athena." +;; + 'stop') + ps ax | grep -E "${L_SRV}|${C_SRV}|${M_SRV}" | awk '{print $1}' | xargs kill -9 +;; + 'restart') + $0 stop + $0 start +;; + *) + echo "Usage: athena-start { start | stop | restart }" ;; - 'stop') - # check map server - if [ -f ${M_SRV}.pid ]; then - map=`cat ${M_SRV}.pid` - map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l) - if [ ${map} -ne 0 ]; then - kill `cat ${M_SRV}.pid` - fi - fi - - # check char server - if [ -f ${C_SRV}.pid ]; then - char=`cat ${C_SRV}.pid` - char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l) - if [ ${char} -ne 0 ]; then - kill `cat ${C_SRV}.pid` - fi - fi - - # check login server - if [ -f ${L_SRV}.pid ]; then - login=`cat ${L_SRV}.pid` - login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l) - if [ ${login} -ne 0 ]; then - kill `cat ${L_SRV}.pid` - fi - fi - ;; - 'kill') - # check map server - if [ -f ${M_SRV}.pid ]; then - map=`cat ${M_SRV}.pid` - map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l) - if [ ${map} -ne 0 ]; then - kill -9 `cat ${M_SRV}.pid` - fi - fi - - # check char server - if [ -f ${C_SRV}.pid ]; then - char=`cat ${C_SRV}.pid` - char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l) - if [ ${char} -ne 0 ]; then - kill -9 `cat ${C_SRV}.pid` - fi - fi - - # check login server - if [ -f ${L_SRV}.pid ]; then - login=`cat ${L_SRV}.pid` - login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l) - if [ ${login} -ne 0 ]; then - kill -9 `cat ${L_SRV}.pid` - fi - fi - ;; - 'restart') - if [ `process_check` -eq 0 ]; then - $0 start - else - # 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 - if [ ${login} -eq 0 ]; then - exec ${L_SRV} ${L_SRV_C}& - 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 - if [ ${char} -eq 0 ]; then - exec ${C_SRV} ${C_SRV_C} ${C_SRV_C2}& - 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 - if [ ${map} -eq 0 ]; then - exec ${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5}& - fi - fi - ;; - *) - echo "Usage: athena-start { start | stop | kill | restart }" - ;; esac diff --git a/start b/start index 82cfb7a40..b92fb56df 100644 --- a/start +++ b/start @@ -1,77 +1,35 @@ -#!/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 +#!/bin/bash +# modified by shazeya@syafi.com (NL130240) + +./athena-start start +sleep 30 + +while [ true ]; do + if [ " 0" = "$(ps | grep -e log | wc -l)" ] || +# if [ " 0" = "$(ps | grep -e login | wc -l)" ] || + [ " 0" = "$(ps | grep -e char | wc -l)" ] || + [ " 0" = "$(ps | grep -e map | wc -l)" ]; then + printf "Error:" + date + sleep 10 + printf "Checking:" + date + if [ " 0" = "$(ps | grep -e log | wc -l)" ] || +# if [ " 0" = "$(ps | grep -e login | wc -l)" ] || + [ " 0" = "$(ps | grep -e char | wc -l)" ] || + [ " 0" = "$(ps | grep -e map | wc -l)" ]; then + printf "Error Confirmation:" + date + printf "Restoration:" + date + ./athena-start start + else + printf "Check Miss Sorry:" + date + fi +# else +# printf "Check OK:" +# date + fi + sleep 10 +done -- cgit v1.2.3-60-g2f50