[HowTo]Core-Restarter by Mijago richtig einfügen

10/27/2014 21:20 x'Radon#1
Guten Abend,

da ich gelesen habe das es Leue gibt die den Core-Restarter nicht eingebaut kriegen mache ich hier ein kleinen HowTo.

Es ist Mijago's Core-Restarter. Der dank gilt ihm. Ich zeige euch bloß wie ihr ihn richtig einbaut.

[Only registered and activated users can see links. Click Here To Register...]


Was ihr benötigt:
-Der Core Restarter
-start.sh
-close.sh

Als ersten legen wir die Datei auto3 und autostarter_config.lua in das Verzeichnis wo auch die start.sh liegt. (777 Rechte geben)

Als zweites Konfigurieren wir die autostarter_config.lua

PHP Code:
--[[
    
Dieser Core nutzt Lua5.1!
    
start_daemon()          Keine Parameter     Startet den Core als Daemon
                                                
Damit ist kein Shellscript nötigum diesen Core am Leben zu halten.
    
pause(int)              integer (Zahl)      Lässt den Prozess für X Sekunden anhalten
    is_process_running
(int) integer (Zahl)      Prüftob ein Prozess läuftint ist die PID.
--]]
start_daemon()
data = {
    {
"/usr/home/game/db/","db"},
    {
"/usr/home/game/auth/","auth"},
    {
"/usr/home/game/channel1/","game"},
    --{
"/usr/home/game/channel2/","game"},
    --{
"/usr/home/game/channel3/","game"},
    --{
"/usr/home/game/channel4/","game"},

    {
"/usr/home/game/game99/","game"},
}
while 
true do
  for 
ab in pairs(data) do
    
local f io.open(b[1].."pid")
    if 
not f or not is_process_running(f:read"*all"then
      os
.execute("cd "..b[1].." && nohup ./"..b[2].." >> startlog & cd . ")
      -- print (
"Core restarted. ("..b[2]..")")
    
end
    
if f then
      f
:close()
    
end
  end
  pause
(5)
end 
Wie ihr seht, habe ich die Channel 2-4 auskommentiert. Wenn ihr z.B. mehrere Core's habt, dann schreibt ihr es wie folgt:

PHP Code:
--[[
    
Dieser Core nutzt Lua5.1!
    
start_daemon()          Keine Parameter     Startet den Core als Daemon
                                                
Damit ist kein Shellscript nötigum diesen Core am Leben zu halten.
    
pause(int)              integer (Zahl)      Lässt den Prozess für X Sekunden anhalten
    is_process_running
(int) integer (Zahl)      Prüftob ein Prozess läuftint ist die PID.
--]]
start_daemon()
data = {
    {
"/usr/home/game/db/","db"},
    {
"/usr/home/game/auth/","auth"},
    {
"/usr/home/game/channel1/core1/","game"},
    {
"/usr/home/game/channel1/core2/","game"},
    {
"/usr/home/game/channel1/core3/","game"},
    {
"/usr/home/game/channel1/core4/","game"},
    {
"/usr/home/game/channel1/core5/","game"},
    --{
"/usr/home/game/channel2/","game"},
    --{
"/usr/home/game/channel3/","game"},
    --{
"/usr/home/game/channel4/","game"},

    {
"/usr/home/game/game99/","game"},
}
while 
true do
  for 
ab in pairs(data) do
    
local f io.open(b[1].."pid")
    if 
not f or not is_process_running(f:read"*all"then
      os
.execute("cd "..b[1].." && nohup ./"..b[2].." >> startlog & cd . ")
      -- print (
"Core restarted. ("..b[2]..")")
    
end
    
if f then
      f
:close()
    
end
  end
  pause
(5)
end 
Wenn ihr weniger Core's habt einfach die Zeile rauslöschen.

Als drittes bauen wir den Core-Restarter in die start.sh ein.

So sieht meine Start.sh für einen Channel aus.(Ja ich weiß keine Core-Verteilung brauche ich aber auchnicht.)

PHP Code:
#!/bin/sh
echo -"\033[1;32m Server wird gleich gestartet....\033[0m";
echo -
"\033[1;31m 3 Sekunden Ruhephase\033[0m";
sleep 3
echo -"\033[1;34m Wechsel in Datenbankverzeichnis ... Starting ...\033[0m";
cd db && ./db 
sleep 5
echo -"\033[1;34m Started!\033[0m";
echo 
'  ';
echo -
"\033[1;34m Wechsel in Channel_1_Verzeichnis ...\033[0m";
sleep 2
echo -"\033[1;34m ... Starting First-Core ...\033[0m";
cd ./channel1 && ./game &
sleep 5
echo -"\033[1;34m Started!\033[0m";
echo 
'  ';
echo -
"\033[1;34m Wechsel in Channel_99_Verzeichnis ...\033[0m";
sleep 2
echo -"\033[1;34m ... Starting First-Core ...\033[0m";
cd ./game99 && ./game &
sleep 5
echo -"\033[1;34m Started!\033[0m";
echo 
'  ';
echo -
"\033[1;34m Starting Authentifizierung...\033[0m";
cd ./auth  && ./auth &
sleep 5
echo -"\033[1;34m Authentifizierung Started!\033[0m";
echo 
'  ';
cd /usr/home/game
echo -"\033[1;34m Aktiviere Corerestarter ... Starting ...\033[0m";
./
auto3 &
sleep 2
echo -"\033[1;34m Corerestarter Started!\033[0m"
echo ' ';
sleep 2
echo -"\033[1;34m Server wurde erfolgreich gebootet.\033[0m";
cd 
Also müsst ihr folgende Zeile einfügen:

PHP Code:
./auto3 
Damit der Core-Restarter nach dem herunterfahren eures Server's nicht wieder alles hochfährt, machen wir nun noch einen Eintrag in die close.sh.

Meine close.sh:

PHP Code:
#!/bin/sh
echo -"\033[1;34m Der Server wird herrunter gefahren ... \033[0m"
killall -9 auto3 &
echo -
"\033[1;33m Corerestarter wurde deaktiviert \033[0m"
sleep 5
cd channel1 
&&
./
shut.sh
echo -"\033[1;33m Channel 1 wurde herruntergefahren \033[0m"
sleep 3
cd 
/usr/home/game/game99 &&
./
shut.sh
echo -"\033[1;33m Channel 99 wurde herruntergefahren \033[0m"
sleep 3
cd 
/usr/home/game/auth &&
./
shut.sh
echo -"\033[1;31m Loginserver wurde deaktiviert \033[0m"
cd /usr/home/game/db &&
./
shut.sh
echo -"\033[1;31m Datenbankserver wurde deaktiviert \033[0m"
cd /usr/home/game/
echo 
'  ';
echo -
"\033[1;34m Alle Prozesse beendet \033[0m"
echo -"\033[1;34m Momentanes Verzeichnis -Filesystem- \033[0m"
echo '  '
Also müsst ihr folgende Zeile einfügen:

PHP Code:
killall -9 auto3 
So nun startet ihr und ihr dürftet folgende Meldung bekommen:
[Only registered and activated users can see links. Click Here To Register...]

So das war's dann auch.

Liebe Grüße und schönen Abend noch. :)
10/27/2014 21:37 NaOiZ#2
Gibt doch heut zu tage "vrunner" bewirkt glaub das gleiche
10/27/2014 22:21 .Colossus.#3
Super Sache!
Danke dir :)
10/27/2014 22:28 Bercol#4
Danke dir. :)
10/27/2014 22:31 Tuora#5
Super :)
10/27/2014 22:42 Samael#6
oder man benutzt einfach die public möglichkeiten die genau das gleiche bewirken nur 90% kürzer sind:

Code:
SERVICE='corename'
START="./${SERVICE} &"
while ( : ) do
  if ps ax | grep -v grep | grep $SERVICE > /dev/null
  then
    true
  else
    echo "$SERVICE wird gestartet..."
    $START
  fi
  sleep 5
done
Und diese sind wesentlich einfacher einzubinden. Da gibt es nur 3 schritte im How To:
1. Code oben in eine datei mit dem namen auto.sh rein.
2. anstatt ./game muss ./auto.sh in der start.sh ausgeführt werden.
3. auto.sh einfach anpassen mit corenamen oben, in jeden channel ordner legen und 0777 rechte geben.
wow..
10/27/2014 22:45 x'Radon#7
Wie gesagt es ist nicht mein Core-Restarter. Ich hab bloß ein HowTo gemacht wie man ihn richtig einbaut.
10/28/2014 01:16 lfcmaus#8
Gemacht hast du es auch nicht sondern zum größten Teil 1:1 aus den Files von A&C rausgenommen.
Hast ja nicht einmal die Farbanweisungen entfernt.

Traurig und erbärmlich sich damit Thanks zu erhaschen.

Im Grunde hast du nur das Scripted by "Name" rausgenommen und erklärt wo was hinkommt :facepalm:
10/28/2014 09:29 x'Radon#9
Wollte nur ein HowTo machen und keine Thanks ergammeln. Es gibt halt viele die es jicht eingebaut bekommen.
10/28/2014 10:47 grαyfox#10
Bald kriegen wir schon How To's für die How To's .. :facepalm:
10/28/2014 12:20 Proxy♥#11
Danke für den Release :-)
10/28/2014 12:39 Chill3rruXx#12
echt nice :)
10/28/2014 12:54 #Zyten#13
Quote:
Originally Posted by .ʛᶉɑҹғох™ View Post
Bald kriegen wir schon How To's für die How To's .. :facepalm:
Bald bekommen wir How To's für adden und nicht schreiben... (Skype.)
lg..
10/28/2014 13:33 grαyfox#14
Quote:
Originally Posted by #Zyten View Post
Bald bekommen wir How To's für adden und nicht schreiben... (Skype.)
lg..
Wenn das auf mich bezogen war:

Wann habe ich dich bitte jemals geaddet in Skype :confused:
falls nicht bin ich wohl nicht in der Lage zu verstehen worauf du hinaus willst
11/04/2014 10:54 [TM]SixSense#15
.quest is much easy 10 lines ^^