Ordem Crontab executada com horário diferente

0

Eu tenho um crontab com tempo diferente para executar alguma tarefa, por exemplo, a cada minuto, a cada 10 min, 1 hora, diariamente ... E eu tenho uma pergunta, quando alguns deste cron coincidem no mesmo tempo por exemplo, quando 10 minutos executam, também executo 1 min cron e este cron executa em paralelo ... mas eu quero executar em sequência, por exemplo todos jobs em 1 minuto, e todos os trabalhos em 10 min ... como posso fazer isso ??

    
por sdelcueto 13.10.2016 / 13:56

1 resposta

0

Com o próprio cron, não acho que você possa realmente. Eu provavelmente criaria um script dessa maneira: faça um único script executado a partir do cron a cada minuto e, em seguida, execute as tarefas com intervalos separados desse script. Algo parecido com isto:

Entrada do Crontab:

* * * * * /path/to/main_script.sh

e main_script.sh :

#!/bin/sh
mins=$[ $(date +%s) / 60 ]           # current time, rounded to minutes
run_1min_task.sh
if [ $[ $mins % 10 ] -eq 0 ] ; then  # mins divisible by 10 ?
    run_10min_task.sh                # run the every 10 min task
fi
if [ $[ $mins % 60 ] -eq 0 ] ; then  # same for 1 hour
    run_1hour_task.sh
fi 
if [ $[ $mins % 1440 ] -eq 0 ] ; then # 1440 = 24*60
    run_daily_task.sh
fi

Você precisa levar em conta o fuso horário, se você se importa com a hora em que a tarefa uma vez por dia é executada, o acima deve ser executado às 00:00 UTC. Compare com algum outro valor que não seja zero para alterá-lo.

Além disso, observe que, se suas tarefas levarem mais de um minuto, você precisará garantir que elas funcionem simultaneamente ou impedir que elas ocorram.

    
por 13.10.2016 / 14:09