Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Skripa za proveru i pokretanje servera pod Screen + crontab

[es] :: Linux/UNIX serveri i servisi :: Skripa za proveru i pokretanje servera pod Screen + crontab

[ Pregleda: 3386 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mr. ako

Član broj: 65959
Poruke: 2367



+2294 Profil

icon Skripa za proveru i pokretanje servera pod Screen + crontab20.10.2012. u 03:12 - pre 139 meseci
Kada scripta ide bez screen opcije sve radi kako treba,

#!/bin/bash
# check SERVER
ps -ef | grep -v grep | grep SERVER.jar
# if not found - equals to 1, start it
if [ $? -eq 1 ]
# only if ,,screen -dmS SERVER -t SERVER,,
then
java -jar SERVER.jar
else
echo "eq 0 - SERVER found - do nothing"
fi


ali kad je sa screenom onda nece.

#!/bin/bash
# check SERVER
ps -ef | grep -v grep | grep SERVER.jar
# if not found - equals to 1, start it
if [ $? -eq 1 ]
# only if ,,screen -dmS SERVER -t SERVER,,
then
screen -d -m SERVER -c java -jar SERVER.jar
else
echo "eq 0 - SERVER found - do nothing"
fi


Pretpostavljam da to ne moze bas tako kako sam ja zamislio :) pa me interesuje da li imate neki predlog? Cron pokrece skriptu -> skripta proverava da li je proces SERVER.jar ziv -> ako nije, skripta pokrece SERVER.jar ali sa screen opcijom po imenu SERVER.
Tj. hocu da se prvo attachuje screen koji je vec rucno pokrenut sa "screen -dmS SERVER -t SERVER", a zatim da pokrene SERVER.jar

U crontab sam stavio ovo ispod, tako da bi on pokretao skriptu svakih 5min.
Code:

00 * * * * user ./script.sh
05 * * * * user ./script.sh
10 * * * * user ./script.sh
15 * * * * user ./script.sh
20 * * * * user ./script.sh
25 * * * * user ./script.sh
30 * * * * user ./script.sh
35 * * * * user ./script.sh
40 * * * * user ./script.sh
45 * * * * user ./script.sh
50 * * * * user ./script.sh
55 * * * * user ./script.sh





- Il n'est pas important qui, importe c'est quoi!
 
Odgovor na temu

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.adsl.verat.net.



+1365 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab20.10.2012. u 08:38 - pre 139 meseci
prvo, ovaj crontab ti je uzasan. stavi liniju
Code:
*/5 * * * * user skript

umjesto one gomile sto si stavio.

sto se tice screen-a ne mogu sad da provjerim, ali probaj da navedes punu putanju do java binary...
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

mr. ako

Član broj: 65959
Poruke: 2367



+2294 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab20.10.2012. u 17:32 - pre 139 meseci
Hahha, znao sam da postoji jednostavniji nacin za taj 5min cronjob, ono je bilo suvise rogobatno... :D


Sto se tice putanje java fajla ona nije potrebna, jer radi tako kako jeste u prvom slucaju bez screen-a.
- Il n'est pas important qui, importe c'est quoi!
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
95.180.97.*



+257 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab20.10.2012. u 18:47 - pre 139 meseci
^^
Što ne znači da radi i kad se pokrene preko screen-a. Poslušaj čoveka kad ti priča i probaj (imao sam slučaj da radi iz shell-a a neće iz cron-a npr, i problem je bio baš putanja...)

Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.adsl.verat.net.



+1365 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab20.10.2012. u 18:59 - pre 139 meseci
i ja sam imao isti slucaj :-)

@mr. ako poslusaj covjeka sta ti prica :-)
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

mr. ako

Član broj: 65959
Poruke: 2367



+2294 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab20.10.2012. u 23:09 - pre 139 meseci
Hahaha, okej, poslusacu coveka sta mi prica... :D

- Il n'est pas important qui, importe c'est quoi!
 
Odgovor na temu

uranium
Beograd

Član broj: 60097
Poruke: 543
95.180.54.*

Jabber: uranium@elitesecurity.org
ICQ: 324386953


+5 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab21.10.2012. u 01:20 - pre 139 meseci
Mislim da ima nekoliko grešaka u ovom delu:

screen -d -m SERVER -c java -jar SERVER.jar


Verzije screen-a koje koristim imaju sledeće tumačenje switcha -c :
Citat:

-c file
override the default configuration file from "$HOME/.screenrc" to file.


dalje, ispred onog SERVER bi trebalo da stoji -S ( jer je to ime sesije koje želiš da postaviš ) - ovako kako je trenutno, pretpostavljam da se na trenutak napravi screen, koji pokuša da izvrši komandu "SERVER -c java -jar SERVER.jar" koja odmah failuje jer ovo "SERVER" očito nije ime nikakvog programa itd.

Dakle, ispravna verzija bi trebalo da bude:

screen -d -m -S SERVER java -jar SERVER.jar
ili u toku testiranja nešto poput:

screen -d -m -S SERVER /bin/bash -c "java -jar SERVER.jar &>/tmp/srv.log"


( da ne bude zabune, ne savetujem čuvanje logova u /tmp/ naravno ;) )
Attempt all the problems. Those you can do, don't do. Do the ones you cannot.
 
Odgovor na temu

mr. ako

Član broj: 65959
Poruke: 2367



+2294 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab21.10.2012. u 03:35 - pre 139 meseci
To -c ne bi trebalo tu da bude, ostavio sam ga greskom mozda.
Za ovo drugo se nismo razumeli, jer je screen vec kreiran sa dmS flagovima rucno. Naveo sam u prvoj poruci to.

- Il n'est pas important qui, importe c'est quoi!
 
Odgovor na temu

uranium
Beograd

Član broj: 60097
Poruke: 543
95.180.54.*

Jabber: uranium@elitesecurity.org
ICQ: 324386953


+5 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab21.10.2012. u 13:32 - pre 139 meseci
Koliko vidim, problematična ti je bila ova skripta:


#!/bin/bash
# check SERVER
ps -ef | grep -v grep | grep SERVER.jar
# if not found - equals to 1, start it
if [ $? -eq 1 ]
# only if ,,screen -dmS SERVER -t SERVER,,
then
screen -d -m SERVER -c java -jar SERVER.jar
else
echo "eq 0 - SERVER found - do nothing"
fi


i koliko vidim, ukoliko se ne nađe proces koji u komandi/argumentima ima SERVER.jar, onda se pokušava izvršavanje:

screen -d -m SERVER -c java -jar SERVER.jar
a to objasnih zašto je pogrešno

Ono što je malo problematično je što pokušavaš da se prvo atačuješ na ručno pokrenut screen ( za to svakako ne možeš da koristiš -d -m ).
Mislim da bi bilo lakše da taj ručno pokrenut screen startuješ u detach modu, tako da čim se okonča proces koji pod njim pokrećeš, da se i on sam zatvori, i onda ona skripta samo napravi novu istoimenu sesiju.

[Ovu poruku je menjao uranium dana 21.10.2012. u 14:50 GMT+1]
Attempt all the problems. Those you can do, don't do. Do the ones you cannot.
 
Odgovor na temu

mr. ako

Član broj: 65959
Poruke: 2367



+2294 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab22.10.2012. u 04:34 - pre 139 meseci
Da, u pravu si, paste-ovao sam pogresan fajl gde za screen ne treba da bude -d -m, vec -r kako bi se attachovao na vec kreiran screen.

Nego, palo mi na pamet da u samom crontabu attachujem screen i pokrenem skriptu, kad vec nece iz scripte da attacuje screen...
Code:
*/5 * * * * /usr/bin/screen -r SERVER /home/username/SERVER.sh


Ili da pisem jos jednu skripticu, koja ce da pokrene screen, pa ovu prvu...? :D
...a uvek mi ostaje krajnja opcija da ako ne bude hteo da se reattachuje na postojeci screen, kreira novi sa -dmS SERVERxyz. :/ Probacu par tih varijanti posle podne, ako budem imao vremena i pristup serveru.
- Il n'est pas important qui, importe c'est quoi!
 
Odgovor na temu

mr. ako

Član broj: 65959
Poruke: 2367



+2294 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab22.10.2012. u 18:39 - pre 139 meseci
Sto se tice onoga sto sam hteo u crontab-u:

Ovo ne radi, nece da se re-attachuje na vec postojeci.
Code:
*/5 * * * * screen -r SERVERscn ./script.sh


Dok ovo radi, jer napravi novi screen... ALI...
Code:
*/5 * * * * screen -dms SERVERscn ./script.sh
...ne prikazuje text na ekranu, vec je screen crn ali funkcionalan i prima komande.



Sto se tice skripte:

Ovo isto ne radi, jer nece re-attach.

#!/bin/bash
# check SERVER
ps -ef | grep -v grep | grep SERVER.jar
# if not found - equals to 1, start it
if [ $? -eq 1 ]
then
screen -r SERVERscn java -jar SERVER.jar
else
echo "eq 0 - SERVER found - do nothing"
fi


Dok, ovo radi, jer napravi novi screen... ALI...

#!/bin/bash
# check SERVER
ps -ef | grep -v grep | grep SERVER.jar
# if not found - equals to 1, start it
if [ $? -eq 1 ]
then
screen -dmS SERVERscn java -jar SERVER.jar
else
echo "eq 0 - SERVER found - do nothing"
fi
...sve normalno radi i prikazuje text na ekranu (za razliku od tog istog uradjenog preko cron-a).


Zakljucak, i dalje ne znam kako da, preko crona i scripte, re-attachujem na vec kreiran screen i zatim pokrenem skriptu u tom screenu. :)



@Tyler Durden
Poslusao sam coveka, i isto se ponasa kad upisem full path i bez njega, ali cu imati u vidu da i to moze biti problem nekad. Thx. :)


- Il n'est pas important qui, importe c'est quoi!
 
Odgovor na temu

mr. ako

Član broj: 65959
Poruke: 2367



+2294 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab23.10.2012. u 21:16 - pre 139 meseci
E sad, posto sam jos-malo-pa odustao od varijante da se reattachujem na vec kreiran screen (a vidim da ni vi nesto nisi zainteresovani previse za problem :D ), odlucio sam da probam kako ce ici sa iznova pozivanim screenom svaki put... i dosao do nekih novih informacija. :)

Kada radim ovako (pokrecem screen iz crontaba):
Code:
*/5 * * * * screen -dmS SERVERscn ./script.sh
java -jar SERVER.jar &>/home/username/SERVER.log

U tom slucaju se desava ono sto sam naveo u prethodnoj poruci da se attachovanjem na taj screen sa screen -r SERVERscn "...ne prikazuje text na ekranu, vec je screen crn ali funkcionalan i prima komande." I sve informacije normalno loguje u /home/username/SERVER.log



A kada radim ovako (pokrecem screen iz skripte):
Code:
*/5 * * * * ./script.sh
screen -dmS SERVERscn java -jar SERVER.jar &>/home/username/SERVER.log

Onda se, attachovanjem na taj screen sa screen -r SERVERscn text prikazuje na ekranu (i komande su funkcionalne naravno), ALI nista se ne loguje u /home/username/SERVER.log - fajl je prazan.

Sto nagovestava zasto se nista ne prikazuje na ekranu u prvom slucaju i zasto ne loguje nista u durgom slucaju, ali ono sto mene sad interesuje je ZASTO je to tako? :)
Tj. iz kog razloga je ili/ili varijanta? Kako da namestim da ispisuje na ekranu i loguje?



- Il n'est pas important qui, importe c'est quoi!
 
Odgovor na temu

uranium
Beograd

Član broj: 60097
Poruke: 543
95.180.54.*

Jabber: uranium@elitesecurity.org
ICQ: 324386953


+5 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab23.10.2012. u 21:37 - pre 139 meseci
Možeš da isprobaš tee program.
java -jar SERVER.jar 2>&1 | tee /home/username/SERVER.log


Problem koji imaš sa redirekcijom je u tome što kad smestiš redirekciju u skriptu, onda se ona odnosi na komande koje joj prethode,
a kad radiš bez skripte, redirekcija se odnosi na komandu screen koja igrom slučaja nema potrebe da ispiše ništa ni na stderr ni na stdout ( možeš da testiraš ovu hipotezu tako što namerno napraviš neku grešku u sintaksi screen naredbe - poruku o grešci bi trebalo da nađeš u SERVER.log ).
Attempt all the problems. Those you can do, don't do. Do the ones you cannot.
 
Odgovor na temu

mr. ako

Član broj: 65959
Poruke: 2367



+2294 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab24.10.2012. u 01:36 - pre 139 meseci
Sa tee programom je nesto drugacije...
Kad screen pokrenem iz crontab, radi kako treba - i ispisuje na ekranu i loguje, a kad ga pokrenem iz scripte, onda radi kao i ranije, nece da loguje...
Tako da, screen cu pokretati iz crontab-a, a tebi hvala na ideji za tee. :)

Sto se tice testiranja, kada napravim namernu gresku pri pokretanju screena (recimo pogresan argumnet -zzz) cak i iz scripte, onda to upise log... ali tada nije ni pokrenuo server jer je greska bila jos kod screen naredbe... ali da, hipoteza je ispravna kao sto si i rekao.


EDIT: bitna izmena na pocetku poruke


[Ovu poruku je menjao mr. ako dana 24.10.2012. u 03:01 GMT+1]
- Il n'est pas important qui, importe c'est quoi!
 
Odgovor na temu

uranium
Beograd

Član broj: 60097
Poruke: 543
95.180.54.*

Jabber: uranium@elitesecurity.org
ICQ: 324386953


+5 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab24.10.2012. u 03:01 - pre 139 meseci
Sad tek shvatih da sam onaj tvoj drugi po redu pristup pogrešno oslovio kao da je bez skripte, a zapravo, mislio sam samo na to da li screen kao komandu izvršava skriptu ili prosto shell komandu sa argumentima ...

Možeš da isprobaš i sledeće:


*/5 * * * * screen -dmS SERVERscn ./script.sh

screen -dmS SERVERscn <( java -jar SERVER.jar &>/home/username/SERVER.log )


Poslednjih godina sam prestao da koristim screen za ovakve stvari ...
Dobre alternative su:

1.
nohup komanda &> neki.log

2.
( komanda <&- &> neki.log & ) &


A log uvek možeš da pratiš sa
tail -f neki.log



Attempt all the problems. Those you can do, don't do. Do the ones you cannot.
 
Odgovor na temu

mr. ako

Član broj: 65959
Poruke: 2367



+2294 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab24.10.2012. u 03:49 - pre 139 meseci
Nisam sigran sta postizem sa ovim sto predlazes da testiram kao ni sta onim 2. predlogom.
Sto se tice screen-a meni on odlicno zavrsava posao, ali evo u ovom slucaju ne ide tacno kako sam zamislio, vec moram da pravim workaround i kompromise... Nohup mi ne odgovara nikako, a tail koristim gde ima potrebe i smisla.


E da, zaboravio sam da pitam u vezi ovoga
&>/home/username/SERVER.log
i
2>&1 | tee /home/username/SERVER.log
kako bih mogao da namestim da svaki put kreira novi fajl po moguctsvu sa datumom na taj dan kada je kreiran?
Vidim da tee ima argument -a kojim nastavlja postojeci fajl, no da li postoji nacin za kreiranje novog fajla svaki put?

- Il n'est pas important qui, importe c'est quoi!
 
Odgovor na temu

uranium
Beograd

Član broj: 60097
Poruke: 543
95.180.54.*

Jabber: uranium@elitesecurity.org
ICQ: 324386953


+5 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab24.10.2012. u 09:34 - pre 139 meseci
Ono prvo samo demonstrira kako se može pravilno grupisati redirekcija tako da se odnosi na komandu a ne na sam screen ( bez pravljenja skripte ).

Za datum možeš da probaš nešto poput:

&>/home/username/SERVER.$( date +%F ).log

2>&1 | tee /home/username/SERVER.$( date +%F ).log

Attempt all the problems. Those you can do, don't do. Do the ones you cannot.
 
Odgovor na temu

mr. ako

Član broj: 65959
Poruke: 2367



+2294 Profil

icon Re: Skripa za proveru i pokretanje servera pod Screen + crontab25.10.2012. u 17:22 - pre 139 meseci
Odlicno, to je ono sto mi je trebalo. :) Dodao sam u scriptu ovako da bi bilo preciznije i filename-friendly na Win. :)

2>&1 | tee /home/username/logfilename-$( date +%F-%H-%M-%S ).log





- Il n'est pas important qui, importe c'est quoi!
 
Odgovor na temu

[es] :: Linux/UNIX serveri i servisi :: Skripa za proveru i pokretanje servera pod Screen + crontab

[ Pregleda: 3386 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.