Thanks Thanks:  0
Likes Likes:  0
Dislikes Dislikes:  0
Page 1 of 2 12 LastLast
Results 1 to 15 of 17

Thread: Newcs Check Script

  1. #1
    Standard RSP member
    Join Date
    09 Feb 2009
    Posts
    152
    Mentioned
    0 Post(s)
    Rep Power
    0

    Default Newcs Check Script

    Nu ma ajuta nimeni cu un newcs check script?

    De curand am probleme, tot la cam 2-3 zile crapa si am nevoie de ceva script care sa-l monitorizeze si sa-i dau restart in momentul cand nu-l vede activ.

    Am cautat pe google dar nimic concret. Macar sa incercam noi aici ceva...

  2. #2
    Standard RSP member
    Join Date
    31 Dec 2007
    Posts
    33
    Mentioned
    0 Post(s)
    Rep Power
    60

    Default

    Salut,
    Nu am lucrat cu newcs dar poti sa iti dau niste ideii:

    Creezi un script newcs_ck.sh si ii il faci executabil : chmod +x

    Scriptul poate arata cam asa :

    Code:
    #! /bin/sh
    if ps | grep -v grep | grep -c newcs >/dev/null
    then
    echo "NEWCS is OK"
    else
    echo "Restarting NEWCS"
    /var/bin/newcs
    fi
    Scriptul apoi il bagi in crontab sa ruleze la 5 minute.
    Scriptul e super simplu dar poate fi considerat punct de plecare.
    Last edited by zmeura; 18-03-10 at 15:01. Reason: Regula 12.

  3. #3
    Standard RSP member
    Join Date
    23 Jun 2008
    Posts
    320
    Mentioned
    2 Post(s)
    Rep Power
    60

    Default

    Am facut un script care merge ok.
    Trebuie doar sa modifici primele doua linii in functie de locatia si versiunea newcs-ului.

    Code:
    NEWCS_PATH=/usr/bin
    NEWCS_BIN=newcs_1.67
    NEWCS_PID=`ps -ef|grep $NEWCS_BIN|grep -v grep|wc -l`
    
    start_newcs () {
      $NEWCS_PATH/$NEWCS_BIN
      }
    
    stop_newcs () {
      killall $NEWCS_BIN 2>/dev/null
      sleep 2
      }
    
    check_newcs () {
      if [ $NEWCS_PID -eq 0 ]; then
         echo "`date '+%D %T'` - NewCS is down!"
         echo "`date '+%D %T'` - Starting NewCS ..."
         start_newcs
         echo "`date '+%D %T'` - NewCS started!"
      fi
      }
    
    case "$1" in
       start)
           echo "Start NewCS..."
           start_newcs
           ;;
       stop)
           echo "Stop NewCS..."
           stop_newcs
           ;;
       check)
          check_newcs
          ;;
       *)
          echo "Usage newcs.sh [start|stop|check]"
          exit 0
          ;;
    esac
    
    exit 0
    Il poti pune in crontab la 5 minute:

    Code:
    */5 * * * * /path_to_newcs/check_newcs.sh check > /dev/null 2>&1

  4. #4
    Standard RSP member
    Join Date
    09 Feb 2009
    Posts
    152
    Mentioned
    0 Post(s)
    Rep Power
    0

    Default

    Multumesc baieti, o sa-l testez indata ce ajung acasa si o sa va comunic cum sta treaba.

  5. #5
    Standard RSP member
    Join Date
    09 Feb 2009
    Posts
    152
    Mentioned
    0 Post(s)
    Rep Power
    0

    Default

    Scriptul merge perfect. Problema e alta. Eu tot timpul editam fisierul cronjob sau crontab din /etc/ care se pare ca nu functioneaza.

    Pentru adaugare de cron se scrie din shell ca root

    Code:
    crontab -e
    si acolo se adauga! Merge din prima.

  6. #6
    RSP Enigma Team
    Join Date
    28 Aug 2009
    Location
    Departe
    Posts
    437
    Mentioned
    0 Post(s)
    Rep Power
    56

    Default

    E mai sigur sa faci modificarile in /etc/crontab. Trebuie sa repornesti serviciul ca sa incarce noile setari - de ex. cu "service crond restart" (pe anumite Linux-uri poate fi diferita comanda de restart).

    Cu "crontab -e" modifici doar crontab-ul pentru utilizatorul curent, iar comenzile vor fi executate sub ID-ul acelui user - implicit si cu permisiunile lui.

    A, si mai apare o problema: tastele E si R sunt alaturate, si din viteza risti sa tastezi "crontab -r", care iti va sterge toate setarile din crontab-ul acelui user. Mi s-a intimplat de mai multe ori. Am invatat repede sa tin la indemana o copie de backup a ultimului crontab.

    Ambele metode sunt valabile, eu prefer /etc/crontab pentru ca e mai usor de centralizat totul. Si, indiferent de metoda, nu uitati sa faceti backup.

  7. #7
    Standard RSP member
    Join Date
    09 Feb 2009
    Posts
    152
    Mentioned
    0 Post(s)
    Rep Power
    0

    Default

    Sa zicem ca treaba cu repornirea serviciul n-am stiut-o. Defapt, am stiut ca trebuie sa fac asta dar n-am stiut cum (comanda) si am dat de fiecare data restart dupa ce-am modificat /etc/crontab dar degeaba. Nici o schimbare.

    Pentru mine singura solutie a fost crontab -e .

  8. #8
    RSP Enigma Team
    Join Date
    28 Aug 2009
    Location
    Departe
    Posts
    437
    Mentioned
    0 Post(s)
    Rep Power
    56

    Default

    A, inca ceva: "> /dev/null 2>&1" de mai sus inseamna ca tot output-ul programului va fi aruncat. Pentru depanare se poate inlocui cu ">> /tmp/newcs.log 2>&1" si tot output-ul se va duce in fisierul /tmp/newcs.log (se poate folosi orice nume sau director doriti). Semnul dublu ">>" inseamna ca la fiecare executie a comenzii output-ul se adauga la fisierul existent, spre deosebire de ">", care determina golirea fisierului la executia comenzii, inainte de a incepe sa scrie in el.

    Iar "2>&1" inseamna ca iesirea standard de erori (stderr) sa fie redirectionata la iesirea standard (stdout), care in cazul de mai sus este redirectionata la randul ei spre /dev/null (galeata de gunoi a sistemului) sau un alt fisier.

    ---------- Post added at 22:15 ---------- Previous post was at 22:10 ----------

    @siemens: Ciudat, folosesc Linux de multi ani, nu inteleg de ce repornirea serviciului nu preia modificarile din /etc/crontab. Ce Linux folosesti? Directioneaza output-ul spre un alt fisier in loc de /dev/null, vezi daca scrie ceva acolo.

    Poate e o problema de permisiuni? Daca aplicatia trebuie executatat ca root, de exemplu, atunci linia trebuie scrisa asa:

    */5 * * * * root /path_to_newcs/check_newcs.sh check > /dev/null 2>&1

  9. #9
    Standard RSP member
    Join Date
    09 Feb 2009
    Posts
    152
    Mentioned
    0 Post(s)
    Rep Power
    0

    Default

    Am incercat si cu root si fara root. Folosesc Debian, poate asta explica situatia si probabil ca la ubuntu lucrurile sunt mai simple.

    Momentan da, folosesc cu crontab -e si output-ul intr-un fisier si merge doar ca-mi salveaza tot din newcs, ca si cum l-as porni manual. La inceput nu aparea nimic, absolut nimic.

    Daca sterg fisierul de output si pun toate cele in /etc/crontab, fisierul newcs...log nu se mai genereaza automat decat daca pun aceeasi comanda prin crontab -e.

    Tare ciudat, nu?

  10. #10
    Standard RSP member
    Join Date
    23 Jun 2008
    Posts
    320
    Mentioned
    2 Post(s)
    Rep Power
    60

    Default

    @proteus

    Comanda de mai jos:
    */5 * * * * /path_to_newcs/check_newcs.sh check > /dev/null 2>&1
    redirecteaza outputul scriptului check_newcs.sh in /dev/null, nu outputul executabilului newcs.
    Outputul acestui fisier este inutil in situatia in care acest script este pus in crontab si verificat ca face ceea ce trebuie.

    Este chiar indicat sa redirectezi outputului scriptului in /dev/null sa nu-ti umple syslog-ul de garbage.

    Daca se doreste redirectarea output-ului dat de newcs intr-un fisier pentru debug ulterior, ar trebui modificata linia din script:
    $NEWCS_PATH/$NEWCS_BIN
    in
    $NEWCS_PATH/$NEWCS_BIN > /tmp/newcs.log 2>&1
    sau:
    $NEWCS_PATH/$NEWCS_BIN >> /tmp/newcs.log 2>&1

    In ceea ce priveste instalarea unei comenzi in crontab, eu recomand (doar) varianta:
    crontab -e

  11. #11
    RSP Enigma Team
    Join Date
    28 Aug 2009
    Location
    Departe
    Posts
    437
    Mentioned
    0 Post(s)
    Rep Power
    56

    Default

    Ai dreptate cu output-ul, multumesc pentru corectura, nu citisem atent scriptul.

    Despre "crontab -e", de ce il preferi?

  12. #12
    Standard RSP member
    Join Date
    23 Jun 2008
    Posts
    320
    Mentioned
    2 Post(s)
    Rep Power
    60

    Default

    Prefer crontab -e pentru standardizare.
    Unix este un sistem multiuser, dar /etc/crontab poate fi editat doar de catre root. Un user obisnuit poate folosi doar crontab -e pentru instalarea unor comenzi in cron.

    Daca esti root si folosesti ambele variante de schedulare s-ar putea sa te incurci in viitor.

  13. #13
    RSP Enigma Team
    Join Date
    28 Aug 2009
    Location
    Departe
    Posts
    437
    Mentioned
    0 Post(s)
    Rep Power
    56

    Default

    Inteleg ce spui, dar eu tot zic ca /etc/crontab e mai indicat pentru tot ce tine de sistem. Pentru aplicatii pe care si le pun utilizatorii pentru ei, desigur "crontab -e" e solutia, dar pentru setari facute de root, chiar daca trebuie rulate sub alte UID-uri, eu recomand /etc/crontab.

    Anyway, multumesc pentru discutia interesanta.

  14. #14
    Standard RSP member
    Join Date
    09 Feb 2009
    Posts
    152
    Mentioned
    0 Post(s)
    Rep Power
    0

    Default

    Se poate cumva ca acest script sa-mi spuna si ora cand a crapat si i-a dat reboot? desigur, intr-un log...

  15. #15
    RSP Enigma Team
    Join Date
    28 Aug 2009
    Location
    Departe
    Posts
    437
    Mentioned
    0 Post(s)
    Rep Power
    56

    Default

    Sigur ca se poate. Cum am explicat mai sus, directioneaza output-ul spre un fisier de log in loc de /dev/null. Daca te uiti in script vezi ca in functia check_newcs() scriptul face exact ce doresti: daca newcs e mort il reporneste si scrie la output data si ora la care l-a repornit.

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •