Posso limitar o tempo de execução de um cronjob


8

Eu tenho um cronjob que é executado a cada hora que ocasionalmente está demorando muito para ser executado. Existe alguma maneira de definir um tempo de execução máximo e o trabalho ser morto se exceder isso?

Este é um servidor Ubuntu 10.04.

Obrigado, jebw

Respostas:


11

Experimente o timeoutcomando Por exemplo:

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

enviará um SIGINT ao seu comando se ele não for concluído em 59 minutos.


Boa informação. Você perdeu '-s', mas é "timeout -s 2 3540 <comando>".
Fish Monitor

O instalado via apt no Ubuntu usa a sintaxe mencionei:usage: timeout [-signal] time command...
Cakemox

O que 'dpkg -S bin / timeout' fornece? De fato, o meu é de coreutils e é puro GNUish.
Fish Monitor

timeout: /usr/bin/timeout
Cakemox

10.04, mesmo que o OP.
Cakemox

0

Não. A maneira como fazemos isso é criar um script com um arquivo de bloqueio e fazer com que o script verifique esse arquivo de bloqueio antes de começar a executar novamente, para que ele possa verificar se ele já está em execução e decidir se é executado, se aguarda o outro final ou se matar o outro antes de executar.

Um arquivo de bloqueio é apenas um arquivo vazio ou um arquivo com o outro script PIDsalvo em algum lugar como /var/runou /var/lock.


0

A resposta da cakemox é a melhor. Caso contrário, basta colocar o pid em um arquivo ou usar killall em outro cronograma um minuto antes para interromper o processo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.