|
podtrzymywanie pracy programu
gelman - 23-12-2009 13:16
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
echo Starting TheforgottenServer sleep 0 screen -A -m -d -S tfs ./restart-tfs
restart-tfs
#!/bin/bash while true do ./theforgottenserver done
Ale nie wiem jak z tego korzystać, bo po raz pierwszy będę miał styczność z Linuksem
nikt11 - 23-12-2009 15:08
Prosty skrypt, który sprawdza czy dany program działa, jeśli nie to go włącza np. #!/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.
Ister - 24-12-2009 00:20
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).
gelman - 25-12-2009 14:55
A mógłbyś podać link, bo przeszukałem forum i nie mogę znaleźć?
Ister - 28-12-2009 11:40
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: #!/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:l Zainstalować daemon: aptitude install daemon
l
l Wkleić zawartość powyższego do dowolnego pliku, w sensownej lokalizacji (np plik /root/podtrzymywanie.sh).l
lZmienić 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ć.l
l Nadać temu plikowi prawo wykonywania przynajmniej dla rootal
l Umieścić w crontabie wpis wywołujący ten skrypt co minutę (albo co 5 minut, zależy jak często ma być sprawdzane).l
l Cieszyć się działającym skryptem, a jak nie działa to napisać pytanie co się robi źle.l
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|