[RELEASE]CORE Restarter (Auth, DB, Game - Shell)

06/29/2011 02:04 'aiiR7#1
Hi,

Update: - Folgt die Tage, da manche Verknüpfungen haben, müssen die Leute leider die Shortcuts neusetzen.
Jedes Shortcut muss seinen eigenen Namen haben, also kein Name darf doppel vorkommen, sonst grept er die PIDS nicht richtig aus der Prozessliste.
--
Für die, die andere Strukturen haben, können mir eine PM mit dieser senden, dann werde ich die Shell bearbeiten, oder ihr versucht es selbst.



Manche haben das Problem, dass bei ihnen der Auth (Login) Server, DB Server und/oder der Gamecore an sich abstürzt.
Wenn manche dann auf Klassenfahrt sind, oder nicht zu Hause sind, können sie das Problem nicht beheben, was nicht gerade toll ist.

Dafür habe ich eine kleine Shell geschrieben, die sie autom. startet, wenn sie down sind.

Ihr müsst nur den Pfad zu den Serverfiles anpassen, und zu dem DB, Auth Ordner anpassen, und eben den Pfad zu den einzelnen Gamecores.

Ihr könnt es automatisieren in dem ihr einen Cronjob installiert, oder halt via. Screen.

Alle Vorgänge werden in die LOG geschliegen (corerestart.log, die in dem Verzeichnis ist, wo die Gamefiles liegen)

PS: Ich hab' das gestern in paar Minuten geschrieben, ich werde es die Tage nochmal verbessern, funktioniert aber!


PHP Code:
#!/bin/sh

GAMEDIR="/home/game"
LOG="$GAMEDIR/corerestart.log"

PIDAUTH=`ps aux | grep auth | grep -v grep | awk '{print $2;}'`
if [ 
"x$PIDAUTH!= "x" ];
then
echo "`date +%d.%m.%Y-%H:%M:%S` :: AUTH SERVER IST OKAY! PID: $PIDAUTH>> $LOG
else
echo 
"`date +%d.%m.%Y-%H:%M:%S` :: Der Auth (Login-Server) ist abgestürzt" >> $LOG
echo "`date +%d.%m.%Y-%H:%M:%S` :: Starte Auth (Login-Server) ..." >> $LOG
cd $GAMEDIR
/auth && ./auth
fi

PIDDB
=`ps aux | grep db | grep -v grep | awk '{print $2;}'`
if [ 
"x$PIDDB!= "x" ];
then
echo "`date +%d.%m.%Y-%H:%M:%S` :: DB CORE IST OKAY! PID: $PIDDB>> $LOG
else
echo 
"`date +%d.%m.%Y-%H:%M:%S`:: Der DB Core ist abgestürzt" >> $LOG
echo "`date +%d.%m.%Y-%H:%M:%S` :: Starte DB Core & den rest des Servers ..." >> $LOG
cd $GAMEDIR
/db && ./db
cd $GAMEDIR
/auth && ./auth
cd $GAMEDIR
/channel1/first && ./first
cd $GAMEDIR
/channel1/game1 && ./game1_1
cd $GAMEDIR
/channel1/game2 && ./game1_2
cd $GAMEDIR
/channel1/game3 && ./game1_3
cd $GAMEDIR
/channel1/game4 && ./game1_4
fi

PIDFIRST
=`ps aux | grep first | grep -v grep | awk '{print $2;}'`
if [ 
"x$PIDFIRST!= "x" ];
then
echo "`date +%d.%m.%Y-%H:%M:%S` :: FIRST CORE IST OKAY! PID: $PIDFIRST>> $LOG
else
echo 
"`date +%d.%m.%Y-%H:%M:%S` :: Der FIRST Core ist abgestürzt" >> $LOG
echo "`date +%d.%m.%Y-%H:%M:%S` :: Starte FIRST Core ..." >> $LOG
cd $GAMEDIR
/channel1/first && ./first

fi

PIDGAME1
=`ps aux | grep game1_1 | grep -v grep | awk '{print $2;}'`
if [ 
"x$PIDGAME1!= "x" ];
then
echo "`date +%d.%m.%Y-%H:%M:%S` :: GAME1_1 CORE IST OKAY! PID: $PIDGAME1>> $LOG
else
echo 
"`date +%d.%m.%Y-%H:%M:%S` :: Der GAME1_1 Core ist abgestürzt" >> $LOG
echo "`date +%d.%m.%Y-%H:%M:%S` :: Starte GAME1_1 Core ..." >> $LOG
cd $GAMEDIR
/channel1/game1 && ./game1_1

fi

PIDGAME2
=`ps aux | grep game1_2 | grep -v grep | awk '{print $2;}'`
if [ 
"x$PIDGAME2!= "x" ];
then
echo "`date +%d.%m.%Y-%H:%M:%S` :: GAME1_2 CORE IST OKAY! PID: $PIDGAME2>> $LOG
else
echo 
"`date +%d.%m.%Y-%H:%M:%S` :: Der GAME1_2 Core ist abgestürzt" >> $LOG
echo "`date +%d.%m.%Y-%H:%M:%S` :: Starte GAME1_2 Core ..." >> $LOG
cd $GAMEDIR
/channel1/game2 && ./game1_2

fi

PIDGAME3
=`ps aux | grep game1_3 | grep -v grep | awk '{print $2;}'`
if [ 
"x$PIDGAME3!= "x" ];
then
echo "`date +%d.%m.%Y-%H:%M:%S` :: GAME1_3 CORE IST OKAY! PID: $PIDGAME3>> $LOG
else
echo 
"`date +%d.%m.%Y-%H:%M:%S` :: Der Game1_3 Core ist abgestürzt" >> $LOG
echo "`date +%d.%m.%Y-%H:%M:%S` :: Starte Game1_3 Core ..." >> $LOG
cd $GAMEDIR
/channel1/game3 && ./game1_3

fi

PIDGAME4
=`ps aux | grep game1_4 | grep -v grep | awk '{print $2;}'`
if [ 
"x$PIDGAME4!= "x" ];
then
echo "`date +%d.%m.%Y-%H:%M:%S`:: GAME1_4 CORE IST OKAY! PID: $PIDGAME4>> $LOG
else
echo 
"`date +%d.%m.%Y-%H:%M:%S` :: Der Game1_4 Core ist abgestürzt" >> $LOG
echo "`date +%d.%m.%Y-%H:%M:%S` :: Starte Game1_4 Core ..." >> $LOG
cd $GAMEDIR
/channel1/game4 && ./game1_4

fi

PIDGAME99
=`ps aux | grep game99 | grep -v grep | awk '{print $2;}'`
if [ 
"x$PIDGAME99!= "x" ];
then
echo "`date +%d.%m.%Y-%H:%M:%S`::  GAME99 CORE IST OKAY! PID: $PIDGAME99>> $LOG
else
echo 
"`date +%d.%m.%Y-%H:%M:%S` :: Der Game99 Core ist abgestürzt" >> $LOG
echo "`date +%d.%m.%Y-%H:%M:%S` :: Starte Game99 Core ..." >> $LOG
cd $GAMEDIR
/game99 && ./game99
fi 
06/29/2011 02:07 .Scare©®#2
erster =)

Hammer Arbeit =)
Immer wider gut wen man von dir was hat, da weis man das es clean ist. Danke
06/29/2011 02:07 .ZɘplɘX'#3
nice danke sehr



mfg zeplex
06/29/2011 02:13 ~LuckyStrike~#4
Super Sache, wenns bei mir funktionieren würde :P
aber sonst naice :D
06/29/2011 02:14 'aiiR7#5
Quote:
Originally Posted by ~LuckyStrike~ View Post
Super Sache, wenns bei mir funktionieren würde :P
aber sonst naice :D
Du musst es halt anpassen, aber diesmal ist es nicht(!) in Bash geschrieben :p
Was funktioniert nicht?
06/29/2011 02:22 TehBaTushi16#6
'aiiR7 ist im Release-Rausch!
Spaß bei Seite , geiler Release , thx
06/29/2011 02:23 .Hiяo#7
Phil wie immer hammer... leider kann ich deine Sachen nciht mehr testen^^
06/29/2011 02:25 'aiiR7#8
Quote:
Originally Posted by Hirogami View Post
Phil wie immer hammer... leider kann ich deine Sachen nciht mehr testen^^
Wieso nicht? - ich kann es für dich testen, falls du magst, oder was meintest du damit?
06/29/2011 02:29 .Hiяo#9
Quote:
Originally Posted by 'aiiR7 View Post
Wieso nicht? - ich kann es für dich testen, falls du magst, oder was meintest du damit?
Ne ich meine damit das ich mich solangsam auch von der Sektion verabschieden Möchte.

Nur das ich nicht noch groß nen Abschieds Release machen werde.

Ich gehe nicht weil es mir hier zuviele Kinder sind. Ich gehe weil ich Probleme im RL habe und es im Leben auch wichtigeres gibt als Metin2 Server.

Aber trotzdem danke fürs angebot^^
06/29/2011 02:51 'aiiR7#10
Wer sich mit Shell nicht auskennt, und sich nicht traut (nicht falsch verstehen) etwas zu ändern, kann mir gerne sein Auth, DB & Core Verzeichnis via. PM zusenden.
Am besten ohne Verknüpfungen, ist aber jedem selbst überlassen.
Dann ändere ich es für euch. :)
06/29/2011 07:03 Bataleon#11
sehr nice gemacht und vor allem

1. mal sinnvoll
2. selber geschrieben

nicht solche Spezialisten die alles klauen von anderen Forumen
06/29/2011 09:14 .Rebel#12
I have a question and when the game file is the same to all Channels what we can do for ex:

the game is just 1 file and the channels have a link for that game i give you my log with 4 channels to make you understand litle bether


PHP Code:
AUTH SERVER IST OKAYPID4574
DB CORE IST OKAY
PID4571
CHANNEL1 CORE IST OKAY
PID4574
4577
4580
4583
4586
4617
4618
4623
4625
CHANNEL1_99 CORE IST OKAY
PID4574
4577
4580
4583
4586
4617
4618
4623
4625
CHANNEL2 CORE IST OKAY
PID4574
4577
4580
4583
4586
4617
4618
4623
4625
CHANNEL2_99 CORE IST OKAY
PID4574
4577
4580
4583
4586
4617
4618
4623
4625
CHANNEL3 CORE IST OKAY
PID4574
4577
4580
4583
4586
4617
4618
4623
4625
CHANNEL3_99 CORE IST OKAY
PID4574
4577
4580
4583
4586
4617
4618
4623
4625
CHANNEL4 CORE IST OKAY
PID4574
4577
4580
4583
4586
4617
4618
4623
4625
CHANNEL4_99 CORE IST OKAY
PID4574
4577
4580
4583
4586
4617
4618
4623
4625 
as you can see the game is just 1 the pid 4574 but that game link to that channel is:

ch1 4577
ch1_99 4580
ch2 4583
ch2_99 4586
ch3 4617
ch3_99 4618
ch4 4623
ch4_99 4625

so do you have a bether solution for my case? without rename the game and make 1 game for folther?
06/29/2011 10:25 Perfection-#13
nice aiir7 , finde ich gut solche sachen von dir da man es wirklich braucht!!
aber naja man es ist solche nice sachen von dir gewohnt :) weiter so ...
06/29/2011 14:02 .Risan.#14
Deine Methode wie du sie hier vorstellst, habe ich damals bei den alten 2006er auth Server genauso gemacht..

Fand die damalige lösung mit neustarten usw.. Quatsch..

Best Regards,
Risan
06/29/2011 14:07 тrαder#15
Wenn der Dbcore abstürzt stürzen alle Cores ab weil sie von dem abhängig sind