#!/bin/bash # opengnsys.cron - Script para comprobar si los servicios de OpenGnSys están levantados # e iniciarlos automáticamente. # Nota: este script debe ser lanzado por Cron cada minuto. # Variables. OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} LOGDIR="$OPENGNSYS/log" DEFAULTFILE=/etc/default/opengnsys typeset -i OGCPU # % uso CPU # Comprobar servicios que deben estar activos. [ -f $DEFAULTFILE ] && source $DEFAULTFILE # Salir si no se debe ejecutar la revisión en el cron. [ "$RUN_CRONJOB" == "no" ] && exit # Comprobar si está activo el servidor OpenGnSys. if [ "$RUN_OGADMSERVER" == "yes" ]; then # Parar procesos ogAdmServer si consume más de 90% de CPU. OGPID=$(pgrep ogAdmServer) OGCPU=$(top -b -n 1 -p $OGPID 2>/dev/null | awk -v p=$OGPID '$1~p {printf "%d",$9}') if [ $OGCPU -gt 90 ]; then date +"%d/%m/%Y %H:%M AVISO: ogAdmServer (PID=$OGPID) parado, consumiendo $OGCPU % de CPU" >> $LOGDIR/ogAdmServer.log kill -9 $OGPID fi # Reiniciar servicios si proceso ogAdmServer está caído. if ! pgrep ogAdmServer >/dev/null; then date +"%d/%m/%Y %H:%M ERROR: El servicio ogAdmServer estaba caido, se reinicia" >> $LOGDIR/ogAdmServer.log /etc/init.d/opengnsys restart fi fi # Reiniciar servicios si es repositorio y proceso ogAdmRepo está caído. if [ "$RUN_OGADMREPO" == "yes" -a $(pgrep ogAdmRepo | wc -w) == 0 ]; then date +"%d/%m/%Y %H:%M ERROR: El servicio ogAdmRepo estaba caido, se reinicia" >> $LOGDIR/ogAdmRepo.log /etc/init.d/opengnsys restart fi