Como executar um trabalho de cada vez, mas todos eles a cada hora?

0

Eu tenho o seguinte conjunto de comandos:

docker exec -u www-data bin/console api:execute --object=Account;
docker exec -u www-data bin/console api:execute --object=AgreementType;
docker exec -u www-data bin/console api:execute --object=CFProgramLevel;
docker exec -u www-data bin/console api:execute --object=Product;
docker exec -u www-data bin/console api:execute --object=Customer;
docker exec -u www-data bin/console api:execute --object=Distributor;

Como o comando listado acima é uma sequência, eles precisam ser executados na ordem em que aparecem.

O que preciso alcançar?

  • Executar um e apenas um trabalho de cada vez
  • Respeite a sequência e essa média, por exemplo: Account precisa ser executado antes de AgreementType , AgreementType precisa ser executado antes de CFProgramLevel e assim por diante
  • Executa todas as sequências a cada hora

Eu estava pensando em usar cronjobs, mas não tenho a menor idéia de como conseguir isso. Alguém poderia me fornecer algumas respostas?

    
por ReynierPM 20.09.2017 / 14:28

2 respostas

4

Coloque os comandos em um script e agende o script com o cron:

O script runstuff.sh :

#!/bin/sh

docker exec -u www-data bin/console api:execute --object=Account
docker exec -u www-data bin/console api:execute --object=AgreementType
docker exec -u www-data bin/console api:execute --object=CFProgramLevel
docker exec -u www-data bin/console api:execute --object=Product
docker exec -u www-data bin/console api:execute --object=Customer
docker exec -u www-data bin/console api:execute --object=Distributor

O crontab:

0 * * * * /path/to/runstuff.sh

ou

@hourly /path/to/runstuff.sh

se o seu cron entender @hourly (verifique man 5 crontab ).

Isso permite que você altere o script (se necessário) sem editar o cronjob existente. Também garante que as invocações do Docker sejam executadas na ordem correta e coleta todo o processamento da tarefa em um único local (o script).

    
por 20.09.2017 / 15:04
0

Você pode iniciar o trabalho uma vez a cada hora e combinar no lançamento todos os seus scripts na ordem de sua escolha

Para isso, você precisa fazer o trabalho em 0 minuto, a cada hora, todos os dias, todos os meses, todos os dias da semana, o que significa isso, na sintaxe do crontab:

0 * * * * docker exec -u www-data bin/console api:execute --object=Account;docker exec -u www-data bin/console api:execute --object=AgreementType;docker exec -u www-data bin/console api:execute --object=CFProgramLevel;docker exec -u www-data bin/console api:execute --object=Product;docker exec -u www-data bin/console api:execute --object=Customer;docker exec -u www-data bin/console api:execute --object=Distributor;

Então, você precisa inserir o código anterior em sua tabela crontab, apenas digite crontab -e no seu terminal, e copie o código anterior

    
por 20.09.2017 / 15:01

Tags