-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathathena-start
executable file
·121 lines (111 loc) · 2.45 KB
/
athena-start
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/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