123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #!/bin/sh
- #source var/function
- . ./function.sh
- inst_launch_workaround
- PATH=./:$PATH
- print_start() {
- # more << EOF
- echo "Athena Starting..."
- echo " (c) 2013 rAthena Project"
- echo ""
- echo ""
- echo "checking..."
- #EOF
- }
- get_status(){
- PIDFILE=.$1.pid
- if [ -e ${PIDFILE} ]; then
- ISRUN=$(ps ax | grep $(cat ${PIDFILE}) | grep $1)
- PSRUN=$(echo "$ISRUN" | awk '{ print substr( $0, 0, 7) }')
- fi
- return $PSRUN
- }
- #cheking if already started, launch and mark in log
- start_serv(){
- LOGFILE="log/$1.log"
- get_status $1
- echo "My logfile=${LOGFILE}"
- if [ -z ${PSRUN} ]; then
- exec ./$1&
- echo $! > .$1.pid
- echo "Server '$1' started at `date +"%m-%d-%H:%M-%S"`"
- echo "Server '$1' started at `date +"%m-%d-%H:%M-%S"`" >> ${LOGFILE}
- else
- echo "Can't start '$1', cause is already running p${PSRUN}"
- echo "Can't start '$1', cause is already running p${PSRUN}" >> ${LOGFILE}
- fi
- }
- #experimental
- watch_serv(){
- LOGFILE=./log/$1.log
- ulimit -Sc unlimited
- while true; do
- get_status $1
- if [ -z ${PSRUN} ]; then
- $count=$count+1
- echo "server '$1' is down" >> ${LOGFILE}
- echo "restarting server at time at `date +"%m-%d-%H:%M-%S"`">> ${LOGFILE}
- exec ./$1&
- echo $! > .$1.pid
- if [ $3 ] && [ $3 -lt $count ]; then break; fi
- else sleep $2
- fi
- done
- }
- restart(){
- $0 stop
- for i in ${L_SRV} ${C_SRV} ${M_SRV}
- do
- while true; do
- get_status ${i}
- if [ ${PSRUN} ]; then echo "'${i}' is still running p${PSRUN} waiting end"; sleep 2;
- else break; fi
- done
- done
- $0 start
- }
- case $1 in
- 'start')
- print_start
- check_files
- echo "Check complete."
- echo "Looks good, a nice Athena!"
- for i in ${L_SRV} ${C_SRV} ${M_SRV}
- do
- start_serv $i
- done
- echo "Now Started Athena."
- ;;
- 'watch')
- for i in ${L_SRV} ${C_SRV} ${M_SRV}
- do
- watch_serv $i 10 3
- done
- echo "Now watching Athena."
- ;;
- 'stop')
- for i in ${L_SRV} ${C_SRV} ${M_SRV}
- do
- PIDFILE=.${i}.pid
- if [ -e ./${PIDFILE} ]; then
- kill $(cat ${PIDFILE})
- rm ${PIDFILE}
- fi
- done
- ;;
- 'restart')
- restart
- ;;
- 'status')
- for i in ${L_SRV} ${C_SRV} ${M_SRV}
- do
- get_status ${i}
- if [ ${PSRUN} ]; then echo "'${i}' is running p${PSRUN}"; else echo "'${i}' seem down"; fi
- done
- ;;
- *)
- echo "Usage: athena-start { start | stop | restart | status | watch }"
- read -p "Enter a valid option: " readEnterKey
- $0 $readEnterKey
- ;;
- esac
|