Strona 1 z 1

podtrzymywanie pracy programu

: 23 grudnia 2009, 13:16
autor: gelman
Witam.
Potrzebuje ,,czegoś'' co podtrzymywałoby pracę programu.
Mam zamiar uruchomić serwer do gry na serwerze dedykowanym, na Linuksie (Debian), lecz czasami zdarza się że jest tzw. ,,crash'' i serwer się wyłącza.
Czy mógłby ktoś pomóc mi zrobić ,,coś'' co po wyłączeniu się programu wznowiło jego działanie?

W sieci znalazłem coś takiego:

restart.sh

Kod: Zaznacz cały

echo Starting TheforgottenServer
sleep 0
screen -A -m -d -S tfs ./restart-tfs 
restart-tfs

Kod: Zaznacz cały

#!/bin/bash
while true
do
./theforgottenserver 
done
Ale nie wiem jak z tego korzystać, bo po raz pierwszy będę miał styczność z Linuksem

: 23 grudnia 2009, 15:08
autor: nikt11
Prosty skrypt, który sprawdza czy dany program działa, jeśli nie to go włącza np.

Kod: Zaznacz cały

#!/bin/bash
if [ -z "$(pgrep nazwa_programu)" ]; then
{
        /home/użytkownik/nazwa_programu
}
fi
Powyższy skrypt wystarczy dopisać do crona, żeby sprawdzał np: co 5min.

: 24 grudnia 2009, 00:20
autor: Ister
Przeszukaj forum, jakiś czas temu wrzuciłem zupełnie sympatyczny skrypcik do podtrzymywania programów (nota bene nastawiony właśnie na serwery gier). Dodam, że do jego odpalenia wymagane jest doinstalowanie daemon i odpowiedni wpis w crontabie (podany razem ze skryptem).

: 25 grudnia 2009, 14:55
autor: gelman
A mógłbyś podać link, bo przeszukałem forum i nie mogę znaleźć?

: 28 grudnia 2009, 11:40
autor: Ister
No i wstyd, bo ostatecznie popełniony przeze mnie skrypt wylądował od razu u zainteresowanego na dysku, a nie na forum. A sam pisałem, że wyniki umieszczę :shock: Niniejszym poprawiam się i wklejam zawartość skryptu:

Kod: Zaznacz cały

#!/bin/bash
# Sprawdzenie blokady uruchomienia

if [ -a /var/run/sprogram.pid ]; then
echo "Istnieje plik blokady. Czy inny wyzwalacz dziala?";
echo "Jesli nie, usun recznie plik /var/run/sprogram.pid.";
else

# Pobranie wlasnego PID i zalozenie blokady wielokrotnego uruchomienia
myPID=$$;
echo $myPID > /var/run/sprogram.pid;

# Wczytanie listy chodzacych procesow

ps ax > /tmp/sprogram.tmp;

# Sprawdzenie, czy program1 dziala

if grep -c program1 /tmp/sprogram.tmp > 0; then
echo "Program1 dziala";
else
# Uruchomienie programu

echo "Program1 nie dziala, uruchamiam";
cd /home/program1 && daemon -D /home/program1 /home/program1/program1;
fi;

# Sprawdzenie, czy program2 dziala

if grep -c program2 /tmp/sprogram.tmp > 0; then
echo "Program2 dziala";
else

# Uruchomienie programu Program2

echo "Program2 nie dziala, uruchamiam";
cd /home/program2 && daemon -D /home/program2 /home/program2/program2;
fi;

# Czyszczenie po wykonaniu skryptu

rm /tmp/sprogram.tmp;
rm /var/run/sprogram.pid;

# Zabicie skryptu.
# Wymagane, zeby skrypt nie czekal do zakonczenia wszystkich programów.

# kill $myPID;
fi
Do uruchomienia trzeba zrobić następujące rzeczy:
  1. Zainstalować daemon:

    Kod: Zaznacz cały

    aptitude install daemon
  2. Wkleić zawartość powyższego do dowolnego pliku, w sensownej lokalizacji (np plik /root/podtrzymywanie.sh).
  3. Zmienić odpowiednio program1, program2 na swoje programy, które mają być pilnowane. Oczywiście odpowiednio ścieżki, odpalanie itd. Jak potrzeba więcej - zrobić odpowiednią kopię fragmentu. Jak się komuś chce bawić to może to zamienić na tablicę i utworzyć pętlę, ja pisałem na szybko z myślą o konkretnym programie, dopiero później powstała kwestia uruchomienia drugiego, a nie chciało mi się za bardzo tworzyć. Jak nie potrzeba dwóch - jeden wyhashować.
  4. Nadać temu plikowi prawo wykonywania przynajmniej dla roota
  5. Umieścić w crontabie wpis wywołujący ten skrypt co minutę (albo co 5 minut, zależy jak często ma być sprawdzane).
  6. Cieszyć się działającym skryptem, a jak nie działa to napisać pytanie co się robi źle.