Advertisement
pjmakey2

control de demonios

Dec 21st, 2012
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.31 KB | None | 0 0
  1. #!/bin/sh
  2. #
  3. # mongostart    This starts mongodb
  4. #
  5. # chkconfig: 25 80 80
  6. # description:  Arranca el demonio mongo, despues de ldap
  7. #
  8.  
  9. #probablemente te preguntes sobre la linea chkconfig:
  10. #bueno lo que hace eso es definir el nivel de prioridad y en que runlevel del sistema
  11. #arrancara el programa
  12. #explicara esto
  13. #la configuracion esta dividad de acuerdo al tipo de numero que ponemos
  14. #cada configuracion se diferencia por la llegada de un espacio asi
  15. #25(espacio)80(espacio)80
  16. #que dice esto ?
  17. #lo que dice es que el proceso correra cuando el sistema este en los niveles de arranque (runlevels) 2 y 5
  18. #que prioridad de arranca sera 80 y el nivel de detener el demonio sera 80
  19. #los niveles de prioridad de arranque y detencion varian desde el 01 al 99
  20. #puedes mirar los niveles de arranque en tu sistema (que estan basados en el arranque system_v)
  21. #de la siguiente forma ls -l /etc/rc5.d/
  22. #esto mira los niveles de arranques de los demonios cuando el runlevel esta en el nivel 5
  23.  
  24. #funciones comunes para todos los procesos que arrancar en un sistema tipo system_v
  25. . /etc/rc.d/init.d/functions
  26.  
  27. #como para usar mongo, necesitamos acceder desde otro host a ella
  28. #usamos las siguientes lineas, para verificar si el servicio de red esta arriba
  29. #con esto traemos las variables que estan en el archivo network
  30. . /etc/sysconfig/network
  31. #verificamos si la variable NETWORK es igual a no
  32. #para eso utilizamos los operadores ternarios de bash
  33. [ ${NETWORKING} = "no" ] && exit 0
  34.  
  35. #definimos algunas variables
  36. #por el nombre uno ya se da cuenta de lo que hace
  37. PID=/var/run/mongo.pid
  38. LOG=/var/log/mongo.log
  39. PORT=27017
  40. # MONGO_DIR=/usr/share/mongo/bin/
  41. MONGO_BIN="/usr/share/mongo/bin/mongod"
  42. #vamos a utilizar a mongostat para comprobar si el servidor ya esta corriendo en nuestro servidor
  43. MONGO_STAT="/usr/share/mongo/bin/mongostat"
  44.  
  45. # cd $MONGO_DIR
  46. LOCKFILE=/var/lock/subsys/mongo
  47.  
  48. # ./$MONGO_BIN --fork --pidfilepath $PID --logpath $LOG
  49. # ./$MONGO_BIN --pidfilepath $PID --logpath $LOG
  50.  
  51. #armamos la funcion
  52. #para arrancar el demonio de mongo
  53. start () {
  54.     echo $"Iniciando $MONGO_BIN: "
  55.     $MONGO_STAT --port $PORT -n 1 >/dev/null 2>&1
  56.     RETVAL=$?
  57.     if [ $RETVAL = 0 ]; then
  58.         #el demonio ya esta corriendo
  59.         echo $"El demonio $MONGO_BIN ya esta corriendo: "
  60.         return 0
  61.     else
  62.         touch $LOCKFILE
  63.         #corremos mongo como demonio
  64.         $MONGO_BIN  --fork --pidfilepath $PID --logpath $LOG --port $PORT
  65.     fi
  66.    
  67.     return 0
  68.  
  69. }
  70.  
  71. #funcion que parara el servicio mongo
  72. stop() {
  73.     echo $"Parando $MONGO_BIN: "
  74.     if [ ! -f "$PID" ]; then
  75.         # not running; per LSB standards this is "ok"
  76.         echo $"Mongo db no esta corriendo: "
  77.         return 0
  78.     fi
  79.    
  80.     #si esta corriendo lo matamos :)
  81.     PIDM=`cat $PID`
  82.     #validamos que la cadena obtenidad no sea nula
  83.     if [ -n $PIDM ]; then
  84.         #/dev/null 2>&1, lo que hace es redireccionar cualquier salida|salida_errror
  85.         #/dev/null, es un archivo virtual, y su compartamiento es el de descartar
  86.         #cualquier cosa vinculada a el
  87.         #no quiero abordar mucho sobre el directorio /dev, pero en sencillas
  88.         #palabras es un sistema de archivos virtual tipo devfs
  89.         /bin/kill $PIDM >/dev/null 2>&1
  90.         echo 'Deteniendo $MONGO_BIN: '
  91.         RETVAL=$?
  92.         if [ $RETVAL = 0 ]; then
  93.             rm -rv $LOCKFILE
  94.             rm -rv $PID
  95.             return 0
  96.         fi
  97.     fi
  98. }
  99.  
  100. restart() {
  101. #:), restart contiene la funcion stop y start o_O
  102.     stop
  103.     start
  104. }
  105.  
  106. #luego armanos una estructura case, para verificar que parametro paso el usuario
  107. #por la linea de comandos
  108.  
  109. case $1 in
  110.     start)
  111.         start
  112.         ;;
  113.     stop)
  114.         stop
  115.         ;;
  116.     restart)
  117.         restart
  118.         ;;
  119.     status)
  120.         #el comando status, es una funcion definida en /etc/rc.d/init.d/functions
  121.         #y lo que hacemos en este caso es comprobar si el demonio esta corriendo por medio
  122.         #de el numero de proceso asociado a el y el archivo binario que lo arranco
  123.         #no es una de las mejores comprobaciones que podemos hacer, pero si entendemos el
  124.         #proceso de creacion de un demonio, esto ya es suficiente para la mayoria
  125.         status -p "$PID" $MONGO_BIN
  126.         ;;
  127.     *)
  128.     echo $"Uso: $MONGO_BIN {start|stop|restart|status}"
  129.     exit 2
  130.    
  131. esac
  132.  
  133. exit $RETVAL
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement