Javilonas
Trovador Loco
Developer
- Registrado
- 10 Sep 2006
- Mensajes
- 25.306
- Reacciones
- 2.689
- Puntos
- 322
He estado teniendo problemas con el script de arranque y el de testeo del proceso activo, os pongo en situación para que lo entiendan, por que hasta que no me he dado cuenta... Me he vuelto loco tocando por todos sitios en Ncam sin saber de donde llegaba el bloqueo de /dev/dvb/adapter0/ca0 cada dos por tres, el tema es que el deco se quedaba medio tostado y mirando la ram esta estaba bien, me quedaba un 30% aún, así que no encontraba lógica alguna.
Si reinicio el deco estaba claro que se solucionaría (es lo más lógico), pero a mi me interesaba localizar la posible falla. Así que me puse a mirar en primer lugar los procesos activos y me percaté que el script Ncam_Test.sh se estaba ejecutando unas 62 veces , normal.... Llevo desde esta mañana reiniciando con el mando cada dos por tres y el script por defecto que puse en los addons para Ncam te ejecuta el script de testeo, bien...Peeeeero... No lo mata!! por lo que cada vez que reiniciamos la emu desde el mando, este genera un nuevo proceso asociado a un nuevo PID.
Así que le he añadido una línea al script de arranque para que cuando reiniciemos desde el mando, este nos mate primero el proceso activo del script de testeo y acto seguido haga lo mismo con la emu.
La línea añadida es esta (para quien lo quiera implementar en sus scripts para otras emus):
De este modo me cepillo el proceso sin más. Así que os dejo aquí ambos scripts, el de Test y el de arranque de Ncam para OpenLD, es fundamental que añadan el de Test en /usr/script si vais a usar este script de arranque ya que de no hacerlo os dará pantallazo azul casi seguro jeje. Si no lo queréis usar, eliminar del script de arranque las menciones al mismo tanto en el start como en el stop, es decir, eliminar estas dos líneas.
Y arreando, pero lo ideal es usar los dos en conjunto para asegurarnos de que la emu está siempre activa.
Script de arranque Ncam para OpenLD:
Script de testeo Ncam:
También os lo adjunto para descargar, recordar asignarles permisos 755.
Ncam_Test.sh va en /usr/script
Ncam_ncam.sh va en /usr/camscript
Espero que os sea de utilidad
Si reinicio el deco estaba claro que se solucionaría (es lo más lógico), pero a mi me interesaba localizar la posible falla. Así que me puse a mirar en primer lugar los procesos activos y me percaté que el script Ncam_Test.sh se estaba ejecutando unas 62 veces , normal.... Llevo desde esta mañana reiniciando con el mando cada dos por tres y el script por defecto que puse en los addons para Ncam te ejecuta el script de testeo, bien...Peeeeero... No lo mata!! por lo que cada vez que reiniciamos la emu desde el mando, este genera un nuevo proceso asociado a un nuevo PID.
Así que le he añadido una línea al script de arranque para que cuando reiniciemos desde el mando, este nos mate primero el proceso activo del script de testeo y acto seguido haga lo mismo con la emu.
La línea añadida es esta (para quien lo quiera implementar en sus scripts para otras emus):
Código:
kill -9 `ps ax | grep [N]cam_Test.sh | grep -v grep | awk '{print $1}'` 2>/dev/null
De este modo me cepillo el proceso sin más. Así que os dejo aquí ambos scripts, el de Test y el de arranque de Ncam para OpenLD, es fundamental que añadan el de Test en /usr/script si vais a usar este script de arranque ya que de no hacerlo os dará pantallazo azul casi seguro jeje. Si no lo queréis usar, eliminar del script de arranque las menciones al mismo tanto en el start como en el stop, es decir, eliminar estas dos líneas.
Código:
sh /usr/script/Ncam_Test.sh & 2>/dev/null
Código:
kill -9 `ps ax | grep [N]cam_Test.sh | grep -v grep | awk '{print $1}'` 2>/dev/null
Y arreando, pero lo ideal es usar los dos en conjunto para asegurarnos de que la emu está siempre activa.
Script de arranque Ncam para OpenLD:
Código:
#!/bin/sh
CAMNAME="Ncam"
remove_tmp () {
rm -rf /tmp/*.info /tmp/*.tmp
}
echo "[SCRIPT] $1: $CAMNAME"
start_cam ()
{
remove_tmp
sleep 2
/usr/bin/ncam -b & 2>/dev/null
sleep 4
sh /usr/script/Ncam_Test.sh & 2>/dev/null
}
echo "[SCRIPT] $1: $CAMNAME"
stop_cam ()
{
remove_tmp
kill -9 `ps ax | grep [N]cam_Test.sh | grep -v grep | awk '{print $1}'` 2>/dev/null
killall -9 ncam 2>/dev/null
}
case "$1" in
start)
start_cam
;;
stop)
stop_cam
;;
restart)
$0 stop
$0 start
;;
*)
esac
exit 0
Script de testeo Ncam:
Código:
#!/bin/sh
PROCESO='ncam'
TIEMPO='15'
LOG=/tmp/Ncam_Test-error.log
echo " ----- Iniciando test $PROCESO -----"
echo ''
echo ''
echo 'Vamos a comprobar el proceso activo'
echo ''
sleep 2
if pidof $PROCESO > /dev/null
then
echo ''
echo "$PROCESO activo"
else
echo "Alerta! $PROCESO detenido :( "
fi
date=`date`
echo "Iniciando test $PROCESO : $date" >> $LOG
while [ 1 ]
do
pidof $PROCESO > /dev/null
if [ $? -eq 0 ] ; then
echo 'Vamos a proceder a comprobar de nuevo el proceso activo'
echo ''
echo ""
else
date=`date`
echo "Reiniciando $PROCESO : $date" >> $LOG
echo ''
killall -9 $PROCESO
$PROCESO -b & 2>/dev/null
if [ $? -eq 0 ] ; then
echo "Ok! el servicio $PROCESO de nuevo operativo :) "
else
echo "Algo no ha funcionado. Por favor, intenta iniciarlo manualmente"
fi
fi
#Tiempo de comprobación si el servicio sigue activo, si no lo está se reicicia.
sleep $TIEMPO
done
exit 0
También os lo adjunto para descargar, recordar asignarles permisos 755.
Ncam_Test.sh va en /usr/script
Ncam_ncam.sh va en /usr/camscript
Espero que os sea de utilidad
Adjuntos
-
625 bytes Visitas: 236
-
886 bytes Visitas: 152