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

Emiliano Vazquez emilianovazquez at gmail.com
Thu Apr 17 23:03:07 UTC 2014


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.



------------ pr?xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://lists.ubuntu.com/archives/ubuntu-ar/attachments/20140417/c1a7b32b/attachment.html>


More information about the Ubuntu-ar mailing list