athena-start 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. #!/bin/sh
  2. # athena starting script by rowla
  3. # chkconfig: 345 99 01
  4. # description: start and stop athena service
  5. PATH=./:$PATH
  6. L_SRV=./bin/login-server
  7. C_SRV=./bin/char-server
  8. M_SRV=./bin/map-server
  9. L_SRV_C=./conf/login_athena.conf
  10. C_SRV_C=./conf/char_athena.conf
  11. C_SRV_C2=./conf/inter_athena.conf
  12. M_SRV_C=./conf/map_athena.conf
  13. M_SRV_C2=./conf/battle_athena.conf
  14. M_SRV_C3=./conf/atcommand_athena.conf
  15. M_SRV_C4=./conf/script_athena.conf
  16. M_SRV_C5=./conf/msg_athena.conf
  17. print_start() {
  18. # more << EOF
  19. echo "Athena Starting..."
  20. echo " (c) 2003 Athena Project."
  21. echo " URL:http://project-yare.de/"
  22. echo ""
  23. echo "Debug informations will appear,"
  24. echo "since this is a test release."
  25. echo ""
  26. echo "checking..."
  27. #EOF
  28. }
  29. check_account() {
  30. if [ ! -d ./save ]; then
  31. mkdir ./save
  32. fi
  33. if [ ! -d ./log ]; then
  34. mkdir ./log
  35. fi
  36. if [ ! -d ./conf/import ]; then
  37. mkdir ./conf/import
  38. fi
  39. if [ ! -f ./save/account.txt ]; then
  40. i=0
  41. while [ $i -le 4 ];
  42. do
  43. echo -e "$i\ts`expr $i + 1`\tp`expr $i + 1`\t-\tS\t0\t0\r" >> save/account.txt
  44. i=`expr $i + 1`
  45. done
  46. fi
  47. if [ ! -f ./save/athena.txt ]; then
  48. echo -n > save/athena.txt
  49. fi
  50. if [ ! -f ./save/bank.txt ]; then
  51. echo -n > save/bank.txt
  52. fi
  53. if [ ! -f ./save/guild.txt ]; then
  54. echo -n > save/guild.txt
  55. fi
  56. if [ ! -f ./save/party.txt ]; then
  57. echo -n > save/party.txt
  58. fi
  59. if [ ! -f ./save/pet.txt ]; then
  60. echo -n > save/pet.txt
  61. fi
  62. if [ ! -f ./save/storage.txt ]; then
  63. echo -n > save/storage.txt
  64. fi
  65. if [ ! -f ./save/castle.txt ]; then
  66. i=0
  67. while [ $i -le 19 ];
  68. do
  69. echo -e "$i,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r" >> save/castle.txt
  70. i=`expr $i + 1`
  71. done
  72. fi
  73. if [ ! -f ./conf/import/atcommand_conf.txt ]; then
  74. echo -n > conf/import/atcommand_conf.txt
  75. fi
  76. if [ ! -f ./conf/import/battle_conf.txt ]; then
  77. echo -n > conf/import/battle_conf.txt
  78. fi
  79. if [ ! -f ./conf/import/char_conf.txt ]; then
  80. echo -n > conf/import/char_conf.txt
  81. fi
  82. if [ ! -f ./conf/import/inter_conf.txt ]; then
  83. echo -n > conf/import/inter_conf.txt
  84. fi
  85. if [ ! -f ./conf/import/login_conf.txt ]; then
  86. echo -n > conf/import/login_conf.txt
  87. fi
  88. if [ ! -f ./conf/import/map_conf.txt ]; then
  89. echo -n > conf/import/map_conf.txt
  90. fi
  91. }
  92. check_files() {
  93. 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}
  94. do
  95. if [ ! -f ./$i ]; then
  96. echo "$i does not exist, or can't run."
  97. echo "Stoped, Check your compile or configuration file."
  98. exit 1;
  99. fi
  100. done
  101. # more << EOF
  102. echo "Check done."
  103. echo "Looks good, have a nice athena!"
  104. #EOF
  105. }
  106. process_check() {
  107. # check login server
  108. if [ ! -f ${L_SRV}.pid ]; then
  109. login=0
  110. else
  111. login=`cat ${L_SRV}.pid`
  112. login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l)
  113. fi
  114. # check char server
  115. if [ ! -f ${C_SRV}.pid ]; then
  116. char=0
  117. else
  118. char=`cat ${C_SRV}.pid`
  119. char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l)
  120. fi
  121. # check map server
  122. if [ ! -f ${M_SRV}.pid ]; then
  123. map=0
  124. else
  125. map=`cat ${M_SRV}.pid`
  126. map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l)
  127. fi
  128. # echo "check: ${login} ${char} ${map}"
  129. echo `expr ${login} + ${char} + ${map}`
  130. }
  131. case $1 in
  132. 'start')
  133. if [ `process_check` -eq 0 ]; then
  134. print_start
  135. check_account
  136. check_files
  137. exec ${L_SRV} ${L_SRV_C}&
  138. # exec ${C_SRV} ${C_SRV_C} ${C_SRV_C2} > /dev/null&
  139. # exec ${M_SRV} ${M_SRV_C} ${M_SRV_C2} > /dev/null&
  140. exec ${C_SRV} ${C_SRV_C} ${C_SRV_C2}&
  141. # exec nice -n -20 ${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5}&
  142. exec ${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5}&
  143. echo "Now Started Athena."
  144. else
  145. echo "Athena is already running..."
  146. fi
  147. ;;
  148. 'stop')
  149. # check map server
  150. if [ -f ${M_SRV}.pid ]; then
  151. map=`cat ${M_SRV}.pid`
  152. map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l)
  153. if [ ${map} -ne 0 ]; then
  154. kill `cat ${M_SRV}.pid`
  155. fi
  156. fi
  157. # check char server
  158. if [ -f ${C_SRV}.pid ]; then
  159. char=`cat ${C_SRV}.pid`
  160. char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l)
  161. if [ ${char} -ne 0 ]; then
  162. kill `cat ${C_SRV}.pid`
  163. fi
  164. fi
  165. # check login server
  166. if [ -f ${L_SRV}.pid ]; then
  167. login=`cat ${L_SRV}.pid`
  168. login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l)
  169. if [ ${login} -ne 0 ]; then
  170. kill `cat ${L_SRV}.pid`
  171. fi
  172. fi
  173. ;;
  174. 'kill')
  175. # check map server
  176. if [ -f ${M_SRV}.pid ]; then
  177. map=`cat ${M_SRV}.pid`
  178. map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l)
  179. if [ ${map} -ne 0 ]; then
  180. kill -9 `cat ${M_SRV}.pid`
  181. fi
  182. fi
  183. # check char server
  184. if [ -f ${C_SRV}.pid ]; then
  185. char=`cat ${C_SRV}.pid`
  186. char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l)
  187. if [ ${char} -ne 0 ]; then
  188. kill -9 `cat ${C_SRV}.pid`
  189. fi
  190. fi
  191. # check login server
  192. if [ -f ${L_SRV}.pid ]; then
  193. login=`cat ${L_SRV}.pid`
  194. login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l)
  195. if [ ${login} -ne 0 ]; then
  196. kill -9 `cat ${L_SRV}.pid`
  197. fi
  198. fi
  199. ;;
  200. 'restart')
  201. if [ `process_check` -eq 0 ]; then
  202. $0 start
  203. else
  204. # check login server
  205. if [ ! -f ${L_SRV}.pid ]; then
  206. login=0
  207. else
  208. login=`cat ${L_SRV}.pid`
  209. login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l)
  210. fi
  211. if [ ${login} -eq 0 ]; then
  212. exec ${L_SRV} ${L_SRV_C}&
  213. fi
  214. # check char server
  215. if [ ! -f ${C_SRV}.pid ]; then
  216. char=0
  217. else
  218. char=`cat ${C_SRV}.pid`
  219. char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l)
  220. fi
  221. if [ ${char} -eq 0 ]; then
  222. exec ${C_SRV} ${C_SRV_C} ${C_SRV_C2}&
  223. fi
  224. # check map server
  225. if [ ! -f ${M_SRV}.pid ]; then
  226. map=0
  227. else
  228. map=`cat ${M_SRV}.pid`
  229. map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l)
  230. fi
  231. if [ ${map} -eq 0 ]; then
  232. exec ${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5}&
  233. fi
  234. fi
  235. ;;
  236. *)
  237. echo "Usage: athena-start { start | stop | kill | restart }"
  238. ;;
  239. esac