Преглед на файлове

Updated Unix start scripts from Shazeya, please read changelog for details

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11070 54d463be-8e91-2dee-dedb-b68131a5f0ec
DracoRPG преди 17 години
родител
ревизия
021481ab09
променени са 3 файла, в които са добавени 89 реда и са изтрити 329 реда
  1. 4 0
      Changelog-Trunk.txt
  2. 50 252
      athena-start
  3. 35 77
      start

+ 4 - 0
Changelog-Trunk.txt

@@ -3,6 +3,10 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
+2007/08/23
+	* Updated athena-start & start to Shazeya's hack. Please test them! [DracoRPG]
+	- Simplest way is to run ./start that is equivalent to Windows runserver_sql.bat
+	- To run TXT instead, edit the beginning of athena-start with proper filenames
 2007/08/22
 	* Fixed Dragon Fear's status change selection and duration.
 	* Fixed Metamorphosis not displaying a speed-change update on the client.

+ 50 - 252
athena-start

@@ -1,276 +1,74 @@
 #!/bin/sh
 # athena starting script by rowla
-
-# chkconfig: 345 99 01
-# description: start and stop athena service
+# modified by shazeya@syafi.com (NL101541)
 
 PATH=./:$PATH
 
-L_SRV=./bin/login-server
-C_SRV=./bin/char-server
-M_SRV=./bin/map-server
-L_SRV_C=./conf/login_athena.conf
-C_SRV_C=./conf/char_athena.conf
-C_SRV_C2=./conf/inter_athena.conf
-M_SRV_C=./conf/map_athena.conf
-M_SRV_C2=./conf/battle_athena.conf
-M_SRV_C3=./conf/atcommand_athena.conf
-M_SRV_C4=./conf/script_athena.conf
-M_SRV_C5=./conf/msg_athena.conf
+L_SRV=login-server_sql
+C_SRV=char-server_sql
+M_SRV=map-server_sql
 
 print_start() {
-#	more << EOF
+#    more << EOF
 echo "Athena Starting..."
-echo "			(c) 2003 Athena Project."
-echo "			URL:http://project-yare.de/"
-echo ""
-echo "Debug informations will appear,"
-echo "since this is a test release."
+echo "            (c) 2003 Athena Project"
+echo "              modified by shazeya@syafi.com"
 echo ""
+#echo "Debug informations will appear,"
+#echo "since this is a test release."
+#echo ""
 echo "checking..."
 #EOF
 }
 
-check_account() {
-	if [ ! -d ./save ]; then
-		mkdir ./save
-	fi
-
-	if [ ! -d ./log ]; then
-		mkdir ./log
-	fi
-
-	if [ ! -d ./conf/import ]; then
-		mkdir ./conf/import
-	fi
-
-	if [ ! -f ./save/account.txt ]; then
-		i=0
-		while [ $i -le 4 ];
-		do
-			echo -e "$i\ts`expr $i + 1`\tp`expr $i + 1`\t-\tS\t0\t0\r" >> save/account.txt
-			i=`expr $i + 1`
-		done
-	fi
-
-	if [ ! -f ./save/athena.txt ]; then
-		echo -n > save/athena.txt
-	fi
-
-	if [ ! -f ./save/bank.txt ]; then
-		echo -n > save/bank.txt
-	fi
-
-	if [ ! -f ./save/guild.txt ]; then
-		echo -n > save/guild.txt
-	fi
-
-	if [ ! -f ./save/party.txt ]; then
-		echo -n > save/party.txt
-	fi
-
-	if [ ! -f ./save/pet.txt ]; then
-		echo -n > save/pet.txt
-	fi
-
-	if [ ! -f ./save/storage.txt ]; then
-		echo -n > save/storage.txt
-	fi
-
-	if [ ! -f ./save/castle.txt ]; then
-		i=0
-		while [ $i -le 19 ];
-		do
-			echo -e "$i,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r" >> save/castle.txt
-			i=`expr $i + 1`
-		done
-	fi
-
-	if [ ! -f ./conf/import/atcommand_conf.txt ]; then
-		echo -n > conf/import/atcommand_conf.txt
-	fi
-
-	if [ ! -f ./conf/import/battle_conf.txt ]; then
-		echo -n > conf/import/battle_conf.txt
-	fi
-
-	if [ ! -f ./conf/import/char_conf.txt ]; then
-		echo -n > conf/import/char_conf.txt
-	fi
-
-	if [ ! -f ./conf/import/inter_conf.txt ]; then
-		echo -n > conf/import/inter_conf.txt
-	fi
-
-	if [ ! -f ./conf/import/login_conf.txt ]; then
-		echo -n > conf/import/login_conf.txt
-	fi
-
-	if [ ! -f ./conf/import/map_conf.txt ]; then
-		echo -n > conf/import/map_conf.txt
-	fi
-}
+#check_account() {
+#    if [ ! -f ./save/account.txt ]; then
+#        echo "0    s1    p1    -    S    0" > save/account.txt
+#        echo "1    s2    p2    -    S    0" >>save/account.txt
+#        echo "2    s3    p3    -    S    0" >>save/account.txt
+#        echo "3    s4    p4    -    S    0" >>save/account.txt
+#        echo "4    s5    p5    -    S    0" >>save/account.txt
+#    fi
+#}
 
 check_files() {
 
-	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}
-	do
-		if [ ! -f ./$i ]; then
-    		echo "$i does not exist, or can't run."
-    		echo "Stoped, Check your compile or configuration file."
-    		exit 1;
-		fi
-	done
-
-#	more << EOF
-echo "Check done."
-echo "Looks good, have a nice athena!"
+    for i in ${L_SRV} ${C_SRV} ${M_SRV}
+    do
+        if [ ! -f ./$i ]; then
+            echo "$i does not exist, or can't run."
+            echo "Stop. Check your compile."
+            exit 1;
+        fi
+    done
+
+#    more << EOF
+echo "Check complete."
+echo "Looks good, a nice Athena!"
 #EOF
 }
-
-process_check() {
-	# check login server
-	if [ ! -f ${L_SRV}.pid ]; then
-		login=0
-	else
-		login=`cat ${L_SRV}.pid`
-		login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l)
-	fi
-
-	# check char server
-	if [ ! -f ${C_SRV}.pid ]; then
-		char=0
-	else
-		char=`cat ${C_SRV}.pid`
-		char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l)
-	fi
-
-	# check map server
-	if [ ! -f ${M_SRV}.pid ]; then
-		map=0
-	else
-		map=`cat ${M_SRV}.pid`
-		map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l)
-	fi
-
-	# echo "check: ${login} ${char} ${map}"
-	echo `expr ${login} + ${char} + ${map}`
-}
+    
 
 case $1 in
-	'start')
-		if [ `process_check` -eq 0 ]; then
-			print_start
-			check_account
-			check_files
+    'start')
+        print_start
+#        check_account
+        check_files
 
-			exec ${L_SRV} ${L_SRV_C}&
-#			exec ${C_SRV} ${C_SRV_C} ${C_SRV_C2} > /dev/null&
-#			exec ${M_SRV} ${M_SRV_C} ${M_SRV_C2} > /dev/null&
-			exec ${C_SRV} ${C_SRV_C} ${C_SRV_C2}&
-#			exec nice -n -20 ${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5}&
-			exec ${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5}&
+        exec ./${L_SRV}&
+        exec ./${C_SRV}&
+        exec ./${M_SRV}&
 
-			echo "Now Started Athena."
-		else
-			echo "Athena is already running..."
-		fi
+        echo "Now Started Athena."
+;;
+    'stop')
+        ps ax | grep -E "${L_SRV}|${C_SRV}|${M_SRV}" | awk '{print $1}' | xargs kill -9
+;;
+    'restart')
+        $0 stop
+        $0 start
+;;
+    *)
+        echo "Usage: athena-start { start | stop | restart }"
 ;;
-	'stop')
-		# check map server
-		if [ -f ${M_SRV}.pid ]; then
-			map=`cat ${M_SRV}.pid`
-			map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l)
-			if [ ${map} -ne 0 ]; then
-				kill `cat ${M_SRV}.pid`
-			fi
-		fi
-
-		# check char server
-		if [ -f ${C_SRV}.pid ]; then
-			char=`cat ${C_SRV}.pid`
-			char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l)
-			if [ ${char} -ne 0 ]; then
-				kill `cat ${C_SRV}.pid`
-			fi
-		fi
-
-		# check login server
-		if [ -f ${L_SRV}.pid ]; then
-			login=`cat ${L_SRV}.pid`
-			login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l)
-			if [ ${login} -ne 0 ]; then
-				kill `cat ${L_SRV}.pid`
-			fi
-		fi
-	;;
-	'kill')
-		# check map server
-		if [ -f ${M_SRV}.pid ]; then
-			map=`cat ${M_SRV}.pid`
-			map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l)
-			if [ ${map} -ne 0 ]; then
-				kill -9 `cat ${M_SRV}.pid`
-			fi
-		fi
-
-		# check char server
-		if [ -f ${C_SRV}.pid ]; then
-			char=`cat ${C_SRV}.pid`
-			char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l)
-			if [ ${char} -ne 0 ]; then
-				kill -9 `cat ${C_SRV}.pid`
-			fi
-		fi
-
-		# check login server
-		if [ -f ${L_SRV}.pid ]; then
-			login=`cat ${L_SRV}.pid`
-			login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l)
-			if [ ${login} -ne 0 ]; then
-				kill -9 `cat ${L_SRV}.pid`
-			fi
-		fi
-	;;
-	'restart')
-		if [ `process_check` -eq 0 ]; then
-			$0 start
-		else
-			# check login server
-			if [ ! -f ${L_SRV}.pid ]; then
-				login=0
-			else
-				login=`cat ${L_SRV}.pid`
-				login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l)
-			fi
-			if [ ${login} -eq 0 ]; then
-				exec ${L_SRV} ${L_SRV_C}&
-			fi
-
-			# check char server
-			if [ ! -f ${C_SRV}.pid ]; then
-				char=0
-			else
-				char=`cat ${C_SRV}.pid`
-				char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l)
-			fi
-			if [ ${char} -eq 0 ]; then
-				exec ${C_SRV} ${C_SRV_C} ${C_SRV_C2}&
-			fi
-
-			# check map server
-			if [ ! -f ${M_SRV}.pid ]; then
-				map=0
-			else
-				map=`cat ${M_SRV}.pid`
-				map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l)
-			fi
-			if [ ${map} -eq 0 ]; then
-				exec ${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5}&
-			fi
-		fi
-	;;
-	*)
-		echo "Usage: athena-start { start | stop | kill | restart }"
-	;;
 esac

+ 35 - 77
start

@@ -1,77 +1,35 @@
-#!/bin/sh
-
-# Athena自動再起動スクリプト
-#
-#  [USAGE] ./start
-#
-#  既にAthenaを起動した状態では実行しないで下さい。
-#  サーバーの状態を確認するスクリプトが動作するので、シェルに戻りません。
-#  Athenaを止めたいときは Ctrl+C で終了してください。
-# 
-#  もしくは ./start & としてバックグラウンドで起動すると
-#  シェルに戻ってきますが、サーバーの停止が少し面倒です。
-
-L_SRV=./bin/login-server
-C_SRV=./bin/char-server
-M_SRV=./bin/map-server
-
-process_check() {
-	# check login server
-	if [ ! -f ${L_SRV}.pid ]; then
-		login=0
-	else
-		login=`cat ${L_SRV}.pid`
-		login=$(ps ax | grep "${L_SRV}" | grep "${login}" | wc -l)
-	fi
-
-	# check char server
-	if [ ! -f ${C_SRV}.pid ]; then
-		char=0
-	else
-		char=`cat ${C_SRV}.pid`
-		char=$(ps ax | grep "${C_SRV}" | grep "${char}" | wc -l)
-	fi
-
-	# check map server
-	if [ ! -f ${M_SRV}.pid ]; then
-		map=0
-	else
-		map=`cat ${M_SRV}.pid`
-		map=$(ps ax | grep "${M_SRV}" | grep "${map}" | wc -l)
-	fi
-
-	# echo "check: ${login} ${char} ${map}"
-	echo `expr ${login} + ${char} + ${map}`
-}
-
-if [ `process_check` -ne 0 ]; then
-	echo "Athena is already running..."
-else
-	./athena-start start
-	sleep 30
-
-	while true
-	do
-		if [ `process_check` -lt 3 ]; then
-			printf "Error:"
-			date
-			sleep 10
-			printf "Checking:"
-			date
-			if [ `process_check` -lt 3 ]; then
-				printf "Error Confirmation:"
-				date
-				printf "Restoration:"
-				date
-				./athena-start restart
-				else
-				printf "Check Miss Sorry:"
-				date
-			fi
-		#else
-		#	printf "Check OK:"
-		#	date
-		fi
-		sleep 10
-	done
-fi
+#!/bin/bash
+# modified by shazeya@syafi.com (NL130240)
+
+./athena-start start
+sleep 30
+
+while [ true ]; do
+    if [ "      0" = "$(ps | grep -e log | wc -l)" ] ||
+#    if [ "      0" = "$(ps | grep -e login | wc -l)" ] ||
+       [ "      0" = "$(ps | grep -e char  | wc -l)" ] ||
+       [ "      0" = "$(ps | grep -e map   | wc -l)" ]; then
+        printf "Error:"
+        date
+        sleep 10
+        printf "Checking:"
+        date
+        if [ "      0" = "$(ps | grep -e log | wc -l)" ] ||
+#        if [ "      0" = "$(ps | grep -e login | wc -l)" ] ||
+           [ "      0" = "$(ps | grep -e char  | wc -l)" ] ||
+           [ "      0" = "$(ps | grep -e map   | wc -l)" ]; then
+            printf "Error Confirmation:"
+            date
+            printf "Restoration:"
+            date
+            ./athena-start start
+        else
+            printf "Check Miss Sorry:"
+            date
+        fi
+#    else
+#        printf "Check OK:"
+#        date
+    fi
+    sleep 10
+done