egoistdream Posted November 30, 2010 Report Posted November 30, 2010 (edited) Un program care iti verifica daca un screen e pornit la un anumit interval de timp...in cazul in care nu este pornit iti executa o comanda(iti poate reporni screenul)...binenteles ca se putea face lucrul asta si cu crontab dar la un interval de minim 1 minut....scriptul meu poate verifica un screen si la un interval de o secunda....e adevarat ca pentru adevaratii programatori nu are valoare scriptul asta dar sper sa ajute pe cineva.Pasii pe care trebuie sa ii urmezi:1 Downloadati scriptul de la adresa DreamServer sau MegaUpload (wget http://dreamserver.ro/dream.sh)2 Creati un folder unde vreti voi in care trebuie sa se afle doua fisiere: -a. scriptul downloadat -b. un script (obligatoriu) cu numele "start", care sa contina comanda care va fi executata in cazul in care screenul pe care vreti sa il monitorizati este oprit.(de exemplu: cd /home/server/ && screen -m -d -A -S server ./serverumeu)3 Verificati ca cele 2 fisiere sunt executabile (chmod +x)4 Porniti scriptul dream.sh in care precizati numele screenului care va fi monitorizat si intervalul.Scriptul dream.sh il puteti porni de asemenea intr un screen (exemplu pornire in screen: screen -m -d -A -S monitorizarescreen ./dream.sh serverulmeu 30)sper ca pe viitor sa ii pot aduce mai multe functiiCodul sursa#!/bin/bashSCREEN=$1TIMP=$2 # =========== FUNCTII ===========function print_info(){ echo " >> $1"}function force_exit(){ # in caz de eroare echo " >> $1, Inchid programul..." echo " >> Exemplu: $0 [numescreen] [secunde]" exit 1 # eroare}function safe_exit(){ echo " >> Inchid programul..." exit 0} # =========== IMPLEMENTARE =========== if [ $# -lt 2 ]; then force_exit "Numar prea mic de parametrii"fiif [ $# -gt 2 ]; then force_exit "Numar prea mare de parametrii"fi##############################################################echo " _____ _____| __ \ / ____|| | | |_ __ ___ __ _ _ __ ___ | (___ ___ _ ____ _____ _ __| | | | __/ _ \/ _ | _ _ \ \___ \ / _ \ __\ \ / / _ \ __|| |__| | | | __/ (_| | | | | | |____) | __/ | \ V / __/ ||_____/|_| \___|\__ _|_| |_| |_|_____/ \___|_| \_/ \___|_|********************************************************************************** Gazduire servere de cs 32 sloturi port 27015 la doar 50lei/luna ********** Gazduire servere de cs 32 sloturi port 28015 la doar 30lei/luna ********** Gazduire servere de cs 32 sloturi port 26015 la doar 30lei/luna ********** Gazduire servere de Sa-Mp 50 sloturi port 7777 doar 30lei/luna ********** Reseller Web 5 gb spatiu maxim 25 clienti la doar 25 lei/luna ***************************Script realizat de Cristian******************************************************** DreamServer.ro ******************************************** Contact: Cristian@DreamServer.ro YM! cristian8357*******************************************************************************************-----------------------------------------------------------------------------Verific la fiecare $2 secunde daca screenul $1 este pornit."id=1 while [ $1 = $1 ]doif test `screen -r | grep $1 | wc -l` -eq 1; thenecho $id."Screenul $1 este pornit";elseecho $id.`date +%H:%M` "Am executat comanda ./start deoarece screenul $1 era oprit"./startfi(( id++ ))sleep $2donesafe_exit Edited November 30, 2010 by egoistdream Quote
aelius Posted December 1, 2010 Report Posted December 1, 2010 #!/bin/sh# myapp.pid - pid-ul aplicatiei.# MYPATH - full path catre aplicatie# myapp - aplicatia mea# pune-ma in crontab MYPATH=/usr/home/tex/workif test -r $MYPATH/myapp.pid; then # inseamna ca ruleaza aplicatia else # nu ruleaza, hai sa o pornim cd $MYPATH && ./myapp -p myapp.pidfi Quote