start 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #!/bin/sh
  2. # Athena自動再起動スクリプト
  3. #
  4. # [USAGE] ./start
  5. #
  6. # 既にAthenaを起動した状態では実行しないで下さい。
  7. # サーバーの状態を確認するスクリプトが動作するので、シェルに戻りません。
  8. # Athenaを止めたいときは Ctrl+C で終了してください。
  9. # 
  10. # もしくは ./start & としてバックグラウンドで起動すると
  11. # シェルに戻ってきますが、サーバーの停止が少し面倒です。
  12. L_SRV=./bin/login-server
  13. C_SRV=./bin/char-server
  14. M_SRV=./bin/map-server
  15. process_check() {
  16. # check login server
  17. if [ ! -f ${L_SRV}.pid ]; then
  18. login=0
  19. else
  20. login=`cat ${L_SRV}.pid`
  21. login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l)
  22. fi
  23. # check char server
  24. if [ ! -f ${C_SRV}.pid ]; then
  25. char=0
  26. else
  27. char=`cat ${C_SRV}.pid`
  28. char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l)
  29. fi
  30. # check map server
  31. if [ ! -f ${M_SRV}.pid ]; then
  32. map=0
  33. else
  34. map=`cat ${M_SRV}.pid`
  35. map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l)
  36. fi
  37. # echo "check: ${login} ${char} ${map}"
  38. echo `expr ${login} + ${char} + ${map}`
  39. }
  40. if [ `process_check` -ne 0 ]; then
  41. echo "Athena is already running..."
  42. else
  43. ./athena-start start
  44. sleep 30
  45. while true
  46. do
  47. if [ `process_check` -lt 3 ]; then
  48. printf "Error:"
  49. date
  50. sleep 10
  51. printf "Checking:"
  52. date
  53. if [ `process_check` -lt 3 ]; then
  54. printf "Error Confirmation:"
  55. date
  56. printf "Restoration:"
  57. date
  58. ./athena-start restart
  59. else
  60. printf "Check Miss Sorry:"
  61. date
  62. fi
  63. #else
  64. # printf "Check OK:"
  65. # date
  66. fi
  67. sleep 10
  68. done
  69. fi