From 6441bc7fe9d6f9f70bba90258cf753ebf92dc7e5 Mon Sep 17 00:00:00 2001 From: Lance Date: Mon, 27 Mar 2006 08:15:28 +0000 Subject: * Added jAthena's new start and athena-start shell scripts. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5765 54d463be-8e91-2dee-dedb-b68131a5f0ec --- athena-start | 237 +++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 215 insertions(+), 22 deletions(-) (limited to 'athena-start') diff --git a/athena-start b/athena-start index f21dccf71..85cc18bc2 100644 --- a/athena-start +++ b/athena-start @@ -1,11 +1,14 @@ #!/bin/sh # athena starting script by rowla +# chkconfig: 345 99 01 +# description: start and stop athena service + PATH=./:$PATH -L_SRV=login-server -C_SRV=char-server -M_SRV=map-server +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 @@ -30,12 +33,82 @@ echo "checking..." } 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 - 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 + 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 } @@ -55,30 +128,150 @@ echo "Check done." echo "Looks good, have 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') - print_start - check_account - check_files + if [ `process_check` -eq 0 ]; then + 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 ./${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5} ${M_SRV_C6}& + 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} ${M_SRV_C6}& + exec ${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5} ${M_SRV_C6}& - echo "Now Started Athena." + echo "Now Started Athena." + else + echo "Athena is already running..." + fi ;; 'stop') - ps ax | grep -E "${L_SRV}|${C_SRV}|${M_SRV}" | awk '{print $1}' | xargs kill -9 + # 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') - $0 stop - $0 start + 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} ${M_SRV_C6}& + fi + fi ;; *) - echo "Usage: athena-start { start | stop | restart }" + echo "Usage: athena-start { start | stop | kill | restart }" ;; esac -- cgit v1.2.3-70-g09d2