athena-start 6.1 KB

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