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
usage: timeout [-signal] time command...
timeout: /usr/bin/timeout
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
PID
salvo em algum lugar como/var/run
ou/var/lock
.fonte
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.
fonte