Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Problem ze skryptem na restartowanie serwera


  • Zamknięty Temat jest zamknięty
Brak odpowiedzi do tego tematu

#1 Vanquish

    Pomocny

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:58
  • Lokalizacja:Polska
Offline

Napisano 27.02.2011 12:35

Mam własnego VPS-a z Debianem i mam na nim kilka serwerów.
Na zombiemodzie chciałem zrobić autorestart serwera po crashu.
Oto pierwszy skrypt - sprawdzający czy serwer działa

Check.pl
#!/usr/bin/perl -X  
 use Socket;
 
 #-----------------------------------------------------------
 # Konfiguracja (Do ustawienia według opisu)
 #-----------------------------------------------------------
 
 my $host = "IP musiałem zmazać"; # Adres IP serwera do sprawdzania (To jest ten zbindowany).
 my $port = "27018";   # Port serwera, na którym chodzi.
 use constant CHECKEVERY => 90; # Jak często sprawdzać serwer ? (Tutaj ustawiono co 90 sekund).
 use constant TIMEOUT => 20;    # Jak długo czekać na jego odpowiedź zanim go zrestartujemy.
 
 # Poniżej podaj ścieżkę do skryptu uruchamiającego/restartującego serwer.
 # Oczywiście może to być także zwykła komenda zawierające odpowiednie opcje.
  
 my $cmd  = "/root/zombie/restart.sh";
 
 #-----------------------------------------------------------
 # Nie edytuj tego poniżej, chyba, że wiesz co robisz <img src='http://img.amxx.pl/public/style_emoticons/<#EMO_DIR#>/smile.gif' class='bbc_emoticon' alt=':)' />
 #-----------------------------------------------------------
 
 my $MAXLEN = 128;
 my $msg="\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00";
 my $RET = "NONE!";
 $SIG{ALRM} = sub { &TimeOut };
 &Start;
 sub CheckServer {
 	my $ipaddr = inet_aton($host);
 	my $portaddr = sockaddr_in($port, $ipaddr);
 	$RET = "NONE!";
 	socket(SOCKET, PF_INET, SOCK_DGRAM, getprotobyname("udp")) or die "socket: $!";
 	send(SOCKET, $msg, 0, $portaddr) == length($msg) or die "Error Sending Query.\n";
 	alarm(TIMEOUT);
 	recv(SOCKET, $RET, $MAXLEN, 0);
 	close SOCKET;
 		sleep(CHECKEVERY);
 }
 sub Start {
 	while (1) {
 		&CheckServer;
 		}
 	}
 sub TimeOut {
 if ($RET eq "NONE!") {
 	print "SERVER DOWN, RESTARTING!\n";
 		$STARTSERV = `/usr/bin/perl -w $cmd`;
 		print $STARTSERV . "\n";
 	}
 	sleep(CHECKEVERY);
 	close SOCKET;
 }


A to jest drugi który restartuje serwer
restart.sh
#!/bin/bash
screen -AdmS zombie ./hlds_run -game cstrike +map zm_JAM -maxplayers 30 +exec server.cfg -port 27018 -master -secure

Check.pl uruchomiłem w screen i działa cały czas.
Problem jest w restart.sh, bo gdy resetuję serwa to nie zamyka poprzedniego screena o nazwie 'zombie' tylko tworzy nowy z tą samą nazwą.
W wyniku czego nie funkcjonuje jak należy.
Proszę, kogoś kto się zna żeby mi pomógł to jakoś ustawić.

Pozdrawiam.
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych