athena-start 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #!/bin/sh
  2. #source var/function
  3. . ./function.sh
  4. inst_launch_workaround
  5. PATH=./:$PATH
  6. print_start() {
  7. # more << EOF
  8. echo "Athena Starting..."
  9. echo " (c) 2013 rAthena Project"
  10. echo ""
  11. echo ""
  12. echo "checking..."
  13. #EOF
  14. }
  15. get_status(){
  16. PIDFILE=.$1.pid
  17. if [ -e ${PIDFILE} ]; then
  18. ISRUN=$(ps ax | grep $(cat ${PIDFILE}) | grep $1)
  19. PSRUN=$(echo "$ISRUN" | awk '{ print substr( $0, 0, 7) }')
  20. fi
  21. return $PSRUN
  22. }
  23. #cheking if already started, launch and mark in log
  24. start_serv(){
  25. LOGFILE="log/$1.log"
  26. get_status $1
  27. echo "My logfile=${LOGFILE}"
  28. if [ -z ${PSRUN} ]; then
  29. exec ./$1&
  30. echo $! > .$1.pid
  31. echo "Server '$1' started at `date +"%m-%d-%H:%M-%S"`"
  32. echo "Server '$1' started at `date +"%m-%d-%H:%M-%S"`" >> ${LOGFILE}
  33. else
  34. echo "Can't start '$1', cause is already running p${PSRUN}"
  35. echo "Can't start '$1', cause is already running p${PSRUN}" >> ${LOGFILE}
  36. fi
  37. }
  38. #experimental
  39. watch_serv(){
  40. LOGFILE=./log/$1.log
  41. ulimit -Sc unlimited
  42. while true; do
  43. get_status $1
  44. if [ -z ${PSRUN} ]; then
  45. $count=$count+1
  46. echo "server '$1' is down" >> ${LOGFILE}
  47. echo "restarting server at time at `date +"%m-%d-%H:%M-%S"`">> ${LOGFILE}
  48. exec ./$1&
  49. echo $! > .$1.pid
  50. if [ $3 ] && [ $3 -lt $count ]; then break; fi
  51. else sleep $2
  52. fi
  53. done
  54. }
  55. restart(){
  56. $0 stop
  57. for i in ${L_SRV} ${C_SRV} ${M_SRV}
  58. do
  59. while true; do
  60. get_status ${i}
  61. if [ ${PSRUN} ]; then echo "'${i}' is still running p${PSRUN} waiting end"; sleep 2;
  62. else break; fi
  63. done
  64. done
  65. $0 start
  66. }
  67. case $1 in
  68. 'start')
  69. print_start
  70. check_files
  71. echo "Check complete."
  72. echo "Looks good, a nice Athena!"
  73. for i in ${L_SRV} ${C_SRV} ${M_SRV}
  74. do
  75. start_serv $i
  76. done
  77. echo "Now Started Athena."
  78. ;;
  79. 'watch')
  80. for i in ${L_SRV} ${C_SRV} ${M_SRV}
  81. do
  82. watch_serv $i 10 3
  83. done
  84. echo "Now watching Athena."
  85. ;;
  86. 'stop')
  87. for i in ${L_SRV} ${C_SRV} ${M_SRV}
  88. do
  89. PIDFILE=.${i}.pid
  90. if [ -e ./${PIDFILE} ]; then
  91. kill $(cat ${PIDFILE})
  92. rm ${PIDFILE}
  93. fi
  94. done
  95. ;;
  96. 'restart')
  97. restart
  98. ;;
  99. 'status')
  100. for i in ${L_SRV} ${C_SRV} ${M_SRV}
  101. do
  102. get_status ${i}
  103. if [ ${PSRUN} ]; then echo "'${i}' is running p${PSRUN}"; else echo "'${i}' seem down"; fi
  104. done
  105. ;;
  106. *)
  107. echo "Usage: athena-start { start | stop | restart | status | watch }"
  108. ;;
  109. esac