O cron sabe que a instância a ser agendada já está em execução?

6

Eu queria saber se adicionamos um trabalho no crontab, por exemplo para executar a cada 5 minutos e a tarefa não consegue terminar em 5 minutos, o daemon do cron sabe que a instância anterior já está em execução e ignora a próxima execução? Ou eu tenho que, de alguma forma, construir essa lógica para o processo? Como?

    
por Jim 07.04.2014 / 23:25

2 respostas

8

Não, o contrato com o cron é que ele inicia cada trabalho no horário especificado. Cron não sabe quais trabalhos sucessivos são “o mesmo trabalho”.

Se você quiser evitar começar um trabalho quando o anterior não tiver terminado, você precisará colocar algo no início do seu trabalho que o faça sair mais cedo. Por exemplo, você pode organizar seu trabalho para manter um arquivo de bloqueio e sair se ele não puder abrir o arquivo de bloqueio.

* * * * flock -n /var/lock/myjob.lock /path/to/script
    
por 08.04.2014 / 00:22
0

Não, isso não acontece.

O que você pode fazer é definir o cron para executar um script que contenha seu trabalho e configurá-lo para ser executado por um período de tempo específico. Logo antes de cada intervalo de tempo, finalize / mate o job de dentro desse script e faça com que o cron reinicie novamente no momento do próximo intervalo de tempo.

    
por 08.04.2014 / 08:41