¿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

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.


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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.