Existe uma prática recomendada para fazer tarefas cron adjacentes próximas no tempo?

0

Por "tarefas agendentes adjacentes", quero dizer tarefas que fazem coisas do mesmo contexto e em tempos próximos. Por exemplo, por enquanto eu tenho essas tarefas do cron:

0 0 * * * for dir in /var/www/html/*/; do cd "$dir" && /usr/local/bin/wp plugin update --all --allow-root; done
0 0 * * * for dir in /var/www/html/*/; do cd "$dir" && /usr/local/bin/wp core update --allow-root; done
0 0 * * * for dir in /var/www/html/*/; do cd "$dir" && /usr/local/bin/wp theme update --all --allow-root; done

Como você pode ver, eles fazem um trabalho bem "pesado": eles atualizam todos os plugins em vários sites, enviam seus núcleos e, em seguida, seus temas.

Eu dei 1 minuto para a primeira tarefa, uma para a segunda e uma para a terceira.

Da minha experiência, colocá-los todos no primeiro minuto (minuto 0) não é problemático, porque o tempo do cron é apenas o tempo mínimo para iniciar a tarefa , mas cada processo associado à tarefa começaria apenas quando puder, então eu apostaria que geralmente não há problema em fazê-lo.

De qualquer forma, minha pergunta é a seguinte:

Existe (pelo menos) uma prática recomendada para dividir tarefas cron adjacentes em minutos posteriores na mesma hora (0,1,2) no mesmo dia, ou mesmo em horários diferentes no mesmo dia?

Nesse caso, o tempo da minha tarefa ficaria assim:

0 0 * * *
0 1 * * *
0 2 * * *
    
por JohnDoea 25.10.2017 / 11:49

1 resposta

1

Para qualquer coisa além de executar um comando simples, programe um script que faça o processamento complicado ao invés de tentar fazê-lo diretamente no crontab.

#!/bin/sh

for dir in /var/www/html/*/; do
    ( cd "$dir" && /usr/local/bin/wp plugin update --all --allow-root )
done

for dir in /var/www/html/*/; do
    ( cd "$dir" && /usr/local/bin/wp core update --allow-root )
done

for dir in /var/www/html/*/; do
    ( cd "$dir" && /usr/local/bin/wp theme update --all --allow-root )
done

Ou até mesmo

#!/bin/sh

for dir in /var/www/html/*/; do
    ( cd "$dir" && {
        /usr/local/bin/wp plugin update --all --allow-root
        /usr/local/bin/wp core update --allow-root 
        /usr/local/bin/wp theme update --all --allow-root
      } )
done
    
por 25.10.2017 / 11:53

Tags