sábado, 21 de noviembre de 2009

Generar un script arranque de servicios init.d

explicare brevemente como generar un script de arranque de un servicio cuando la aplicación no la trae , esta es basada una aplicación ERP que se adquirió y no tenia su scrip de arranque via init.d basado en chkconfig.
____________________________________________________________________
# librerias para comandos
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
# Verifica si hay coneccion a la red
if [ ${NETWORKING} = "no" ]
then
echo "Networking is down"
exit 0
fi

# bianrio del programa
program=""
program_locations="coloca el binario de tu aplicacion "
for location in $program_locations
do
if [ -f "$location" ]
then
program=$location
fi
done
# lock del program
lock="/var/lock/subsys/nombre de tu aplicacion"
# pid no existe uni para prothues pero se guarda en el aranque
piddir="/var/run/tu programa"

work=/directorio/de/trabajo/

if ! [ -f $program ]
then
echo "BINARIO NO ESTA EN LA RUTA "
exit 0
fi

case "$1" in
start)
echo -n $"Starting Programa : "
if [ ! -d $piddir ]; then
mkdir $piddir
fi
# verifica si el folder de pid esxiste si no lo crea
if [ -f $lock ]; then
# no los pararon correctamente
for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do # busca en el directiorio de pid si hay algun servicio corriendo aun
if [ -s $pidf ]; then

kill -9 `cat $pidf` >/dev/null 2>&1 # mata el aplicativo atorado
fi
rm -f $pidf # remueve el archivo pid
done
rm -f $lock
sleep 2
fi
errors=0
successes=0
rm -f $piddir/*.pid
cd $work
su - root -c "cd /directorio/aplicativo/ ; ./aplicacion & " >/dev/null 2>&1 # corre la aplicacion con el usuario de root no en todos es necesario
ps -d | grep mp8srvlinux | awk '{print $1}' > $piddir/aplicacion.pid # genera el pid
sleep 5
if [ -f $piddir/aplicacion.pid ]; then
successes=1
else
errors=1
fi

if [ $errors = 1 ]; then
failure; echo
else
success; echo
fi

if [ $successes = 1 ]; then
touch $lock
fi
;;
stop)
echo -n $"Shutting down protheus :"
success1=0
for pidf in `/bin/ls $piddir/*.pid 2>/dev/null`; do
if [ -s $pidf ]; then
kill -9 `cat $pidf` >/dev/null 2>&1
fi
rm -f $pidf
rm -f $lock
success1=1
done
if [ $success1 = 1 ];then
success; echo
else
failure; echo
fi

;;

restart)
$0 stop
sleep 2
$0 start
;;

status)
if [ -f $lock ]; then
echo -n $"Aplicacion esta corriendo .. haber si lo alcansas"
echo " "
else
echo -n $"Aplicacion no esta corriendo "
echo " "
fi
;;


*)
echo "Usage: protheus {start|stop|restart|status}"
exit 1
;;
esac
exit 0

____________________________________________________________________

espero les sirva

No hay comentarios:

Publicar un comentario