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:
- Zainstalować daemon:
- Wkleić zawartość powyższego do dowolnego pliku, w sensownej lokalizacji (np plik /root/podtrzymywanie.sh).
- 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ć.
- Nadać temu plikowi prawo wykonywania przynajmniej dla roota
- Umieścić w crontabie wpis wywołujący ten skrypt co minutę (albo co 5 minut, zależy jak często ma być sprawdzane).
- Cieszyć się działającym skryptem, a jak nie działa to napisać pytanie co się robi źle.