¿Puedo limitar el tiempo de ejecución de un cronjob

8

Tengo un cronjob que se ejecuta cada hora y que ocasionalmente tarda demasiado en ejecutarse, ¿hay alguna forma de establecer un tiempo de ejecución máximo y el trabajo se mata si excede eso?

Esto está en un servidor Ubuntu 10.04.

Gracias jebw

jebw
fuente

Respuestas:

11

Prueba el timeoutcomando. Por ejemplo:

0 * * * * timeout -2 3540 /path/to/your_command.sh

enviará un SIGINT a su comando si no se ha completado en 59 minutos.

Cakemox
fuente
Buena informacion Te perdiste '-s', pero es "timeout -s 2 3540 <command>".
Fish Monitor
El que se instaló a través de apt en ubuntu usa la sintaxis que mencioné:usage: timeout [-signal] time command...
Cakemox
¿Qué da 'dpkg -S bin / timeout'? De hecho, el mío es de coreutils y es puro GNUish.
Fish Monitor
timeout: /usr/bin/timeout
Cakemox
10.04, igual que el OP.
Cakemox
0

No La forma en que lo hacemos es crear un script con un archivo de bloqueo y hacer que el script compruebe ese archivo de bloqueo antes de comenzar a ejecutar nuevamente, para que pueda verificar si ya se está ejecutando y decidir si se ejecuta, si espera a que el otro lo haga. final o si mata al otro antes de correr.

Un archivo de bloqueo es solo un archivo vacío o un archivo con el otro script PIDguardado en algún lugar como /var/runo /var/lock.

volcado de memoria
fuente
0

La respuesta de cakemox es la mejor. De lo contrario, simplemente coloque el pid en un archivo o use killall en otro cronjob un minuto antes para finalizar el proceso.

Sirex
fuente