[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Programar tarea diaria con límite de tiempo de ejecución



On Mon, Mar 31, 2014 at 05:01:08PM -0400, Ismael L. Donis Garcia wrote:
> Muchas gracias a todos los que me han respondido.
> 
> Me pondré a ver como se hace para ver si logro hacerlo porque la
> verdad no tengo la más mínima idea de como hacer un script, pero
> bueno miraré de que forma logro hacerlo. Al menos ya me han
> comentado por donde enfocar las cosas.
> 
> El proceso que voy a lanzar no tiene problemas al ser matado ya que
> cuando comienza de nuevo el verifica la ultima operación que realizo
> y a partir de ahí comienza con la siguiente. Por lo que solo me hace
> falta levantar el proceso a una hora y cerrarlo en caso de que esté
> aun abierto a otra hora determinada.
> 
> Saludos Reiterados
> ========
> | ISMAEL |
> ========

No es tan difícil. Solo debes poner 'timeout N' de prefijo al comando
que quieras correr, por ejemplo:

| dualbus@debian:~$ time timeout 5 sleep 10
| 
| real  0m5.059s
| user  0m0.000s
| sys 0m0.000s

(el time es para que veas como dura 5 y no 10 segundos).

Entonces, si buscas que tu comando tenga una duración máxima de 8
horas, solo debes hacer:

| timeout 8h tu-comando-aqui parametros...

Muy sencillo.


Lo que *no* recomiendo es que escribas el PID en un archivo y lances
otro proceso para que mate al original a las 8 horas. No sólo es más
complejo, sino que también puedes terminar matando al que no quieres.

Esto se debe a que si tu proceso original a matar termina temprano,
su PID *desaparece* pero después el kernel puede decidir reutilizar
ese mismo PID para otro proceso. Esto puede producir resultados
inesperados y difíciles de reproducir. Por eso mejor usa el comando
'timeout'.


-- 
Eduardo Alan Bustamante López


Reply to: