[ubuntu-ar] Script en Bash + Crontab = i'm stuck

Juan Manuel "Z37A" Zele zeta85 at gmail.com
Fri Apr 18 00:22:32 UTC 2014


El 17/04/2014 20:04, "Emiliano Vazquez" <emilianovazquez en gmail.com>
escribió:
>
> Hola a todos y Felices Pascuas!
>
> Estoy armando un 2 scripts que deben interactuar entre si. Les explico:
>
> Tengo una conección RS232 a la que le envío un echo y si el mismo esta OK
me devuelve el echo, es decir:
>
> 1. Desde el primer script en bash ejecuto :
> echo "aca va la prueba" > /dev/ttyUSB0   (es un usb a rs232)
>
> 2.Desde el segundo Script ejecuto:
> head -n 1 /dev/ttyUSB
>
> Esto lo ejecuto 59 veces por minuto (estoy haciendo pruebas seguramente
después ponga algún otro valor).
>
> En cron pongo
>
> */1 * * * * /home/emiliano/envio_echo.sh
> */1 * * * * /home/emiliano/recibo_echo.sh
>
> El tema con el que me encuentro es que cuando pierdo conectividad el echo
"aca va la prueba" no vuelve al script 2 y este se queda esperando.
> Lo solucioné dando un timeout al comando:
> timeout 3s head -n 1 /dev/ttyUSB
> Esto me da la posibilidad de esperar 3 segundos y si no hay respuesta lo
corta, volviendo a empezar.
> Pero.... cuando pierdo conectividad el recibo_echo.sh aumenta su tiempo
de ejecución y el siguiente cron se inicia y tengo dos ejecuciones del
mismo proceso! Esto me afecta porque la idea es logear este estado y no
quiero que se logee dos ves.
> Probé haciendo que el script chequee que esta en ejecución, pero si lo
paro después me quedo con segundos en los que no tengo ninguna instancia
del script recibo_echo.sh, lo que sigue siendo un comportamiento no deseado.
>
> Lo que me interesa es obtener ese estado de "esta andando" o "no esta
andando" por eso hago este script (mi mente da para esto no se me ocurre
algo más fácil jajaja). cuando tenga esto funcionando lo voy a mandar a una
base de mysql, pero por el momento me conformo con escribir un log que diga
" se cayo" "ahora se levantó" "se cayo", "se levanto".
> Lo que tengo que evitar es que se de dos veces "se cayo" (cuando
accidentalmente se ejecuta dos veces el script) o que me entere segundos
más tarde si "se cayo", ya que este tiempo podría ser de hasta 59 segundos
y no quisiera tener ese error.
>
> Bueno, espero haber sido claro, si se les ocurre algo lo agradezco, solo
les puedo decir que no quiero usar un loop infinito porque tuve malas
experiencias ya que quizás se cuelga cuando esta ejecutandose 1000 horas.
El cron es algo que no se cuelga nunca, por eso quiero hacerlo por este
medio.
>
> Un abrazo a todos y buen fin de semana!
>
> Emiliano.
>
>
>
>
> --
> Ubuntu-ar lista de correo
> Ubuntu-ar en lists.ubuntu.com
> Modifica tus opciones o desuscribite en:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ar
> Siempre leer, comprender y aplicar nuestra etiqueta:
https://wiki.ubuntu.com/ArgentinaTeam/EtiquetaML
>
>
Por que no probas unificar todo en un solo script con un bucle, creas dos
funciones, una para en envio y otra para la recepcion, luego generas el
bucle que hasta que no llegue la recepcion no envie de nuevo, y ahi le
metes un timeout con un log que te registre la perdida de conectividad?
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://lists.ubuntu.com/archives/ubuntu-ar/attachments/20140417/1aa03c63/attachment.html>


More information about the Ubuntu-ar mailing list