123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- #!/bin/sh
- # athena starting script by rowla
- # chkconfig: 345 99 01
- # description: start and stop athena service
- 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
- M_SRV_C6=./conf/grf-files.txt
- print_start() {
- # 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 ""
- 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_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} ${M_SRV_C6}
- 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!"
- #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
- 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."
- else
- echo "Athena is already running..."
- fi
- ;;
- '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} ${M_SRV_C6}&
- fi
- fi
- ;;
- *)
- echo "Usage: athena-start { start | stop | kill | restart }"
- ;;
- esac
|