Skocz do zawartości
Zaloguj się, aby obserwować  
Mati010

Automatyczne włączanie serwerów

Polecane posty

Witam mam pytanie ponieważ już próbowałem 1 sposobu że jak serwer VPS padnie i włączy się to serwery same staną ale coś nie tak może ktoś mi powie co i jak w cronie zrobić bo być może źle robię. Serwery które mają wstać to: do gry

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Skrypt do włączania kopiujesz do /etc/init.d (uprzednio nadając mu prawa do wykonania [chmod +x]).

 

Następnie wykonujesz:

 

update-rc.d Nazwa_Skryptu defaults 20

 

Śmiga? ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A może da się tak by skrypt był u danego użytkownika ?? bym nie musiał wszystkiego zmieniać np przez crontab -e i jakieś komendy ??

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ehh, zbytnio nie zrozumiałem? Chodzi Ci o to żeby proces uruchamiał się z konta wybranego przez Ciebie użytkownika?

 

//Edit, już chyba wiem ocb ;).

 

Zrób dowiązanie do skryptu w home usera i tyle :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Hmm teraz też nie skapowałem zaraz pokaże o co chodzi na przykładzie

 

janek.sh

 

w tym:

 

#!/bin/bash

 

if ! ps ux|grep "serwerjanka"|grep -v grep; then

cd /home/janek/; screen -d -m -S serwerjanka ./janeksvr

fi

 

 

potem w cronie

 

* * * * * /home/janek/janek.sh

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Aaa mistrzu, to określaj dokładnie o co Ci chodzi bo to co opisałeś w pierwszym poście mówi o całkowicie czymś innym. Zaraz coś postaram się Ci napisać :) (na podstawie panelu do gry który sam piszę).

 

// Edit - Gotowe, powinno działać :) (mimo że moja znajomość basha jest znikoma :)).

 

Tworzysz następujące pliki i dajesz im uprawienia odczytu i wykonania (wykonania do ustawienia.sh nie potrzeba).

 

ustawienia.sh

#!/bin/bash

login="Login"

remove="2"

sleep_time="15"

 

Odpowiednio zmienne odznaczają:

 

login = nazwę binarki którą odpalasz + nazwę katalogu w którym się znajduję. Możesz zmienić jak chcesz :).

remove = liczba znaków odcinana od pliku używanego do włączenia serwera. Inaczej pgrep miał problemy z wykrywaniem procesu serwera. Noobowsko zrobione ale nie miałem czasu się tym zająć ;).

sleep_time = co ile skrypt zasypia (czyt. co ile sprawdzane jest czy serwer jest włączony). Czas w minutach.

 

serwer.sh

#!/bin/bash

source ./ustawienia.sh

odc_login=${login:0:$[ ${#login} - $remove ]}

on() {

./123$odc_login-server.sh &

}

 

off() {

killall 123$odc_login-server.sh

killall $login

}

 

restart() {

off

sleep 3s

on

}

 

hardoff() {

killall -9 123$odc_login-server.sh

killall -9 $login

}

 

case "$1" in

'on')

on ;;

'off')

off ;;

'restart')

restart ;;

'hardoff')

hardoff ;;

*)

echo Wybierz jedną z opcji pliku $0!

echo on|off|restart|hardoff

esac

 

123[wartość-zmiennej-login-bez-ostatnich-2-znaków-server.sh]

Przykład:

login=maciek

123macie-server.sh

 

#!/bin/bash

source ./ustawienia.sh

while true; do

if pgrep $login &>/dev/null; then

echo Ten proces juz istnieje!

else

cd /home/$login/jakis_tam_folder

./$login

fi

sleep $sleep_time

done

 

Jak to ma być skrypt działający na pojedynczym serwerze to spokojnie Ci wystarczy, jestem przekonany że nie potrzeba Ci niczego więcej.

 

Skrypt kontrolki do włączania/wyłączania/resetowania (nie musisz tego używać) jest tylko prze zemnie edytowany, nie jestem jego autorem.

 

Sorry za wszelkie błędy ale mój bash być słaby :)

 

Edit2, mam nadzieję że chodziło o pad procesu a nie vpsa (jak zrobić to w przypadku drugim opisałem Kilka postów wyżej!

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ja mam podobne pytanie, a dokladniej chodzi mi ze po restarcie serwera skrypt usera uruchamial sie na jego koncie na screnie (czyli tak jak by on wpisal sobie screen skrypt.sh) tylko aby to sie robilo automatycznie po restarcie serwera ... Jesli u gory jest to juz napisane to przepraszam ale oboje nakreciliscie i nie jestem wstanie tego zauwazyc :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Ja mam podobne pytanie, a dokladniej chodzi mi ze po restarcie serwera skrypt usera uruchamial sie na jego koncie na screnie (czyli tak jak by on wpisal sobie screen skrypt.sh) tylko aby to sie robilo automatycznie po restarcie serwera ... Jesli u gory jest to juz napisane to przepraszam ale oboje nakreciliscie i nie jestem wstanie tego zauwazyc :)

 

idea jest taka, że należy sobie zrobić setuid na odpowiedniego użytkownika

na systemach debianopodobnych używa się 'sudo' - na innych pewnie też;

 

z manuala do screen:

 

 

-d -m Start screen in "detached" mode. This creates a new session but doesn’t attach to it. This is useful for system startup

scripts.

 

zatem zasadniczo mozesz sobie dopisac do /etc/rc.local (lub innego skryptu domyslnie wolanego przez mechanizm init na koncu ladowania systemu):

 

sudo -u [DesiredUser] screen -d -m /path/to/command with parameters

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×