한 번에 하나의 작업을 실행하고 매 시간마다 모든 작업을 실행하는 방법은 무엇입니까?

한 번에 하나의 작업을 실행하고 매 시간마다 모든 작업을 실행하는 방법은 무엇입니까?

다음과 같은 명령 세트가 있습니다.

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;

위에 나열된 명령은 시퀀스이므로 나타나는 순서대로 실행되어야 합니다.

나는 무엇을 달성해야 합니까?

  • 한 번에 하나의 작업만 실행
  • 순서를 존중합니다. 예를 들어 Account먼저 실행해야 함 AgreementType, AgreementType먼저 실행해야 함 CFProgramLevel등을 의미합니다.
  • 매시간 모든 시퀀스 실행

cronjob을 사용하려고 하는데 어떻게 구현해야 할지 모르겠습니다. 누구든지 나에게 답을 줄 수 있습니까?

답변1

명령을 스크립트에 넣고 cron을 사용하여 스크립트를 예약합니다.

스크립트 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

크론탭:

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

또는,

@hourly /path/to/runstuff.sh

귀하의 크론이 이해한다면 @hourly( 확인 man 5 crontab).

이를 통해 기존 cronjob을 편집하지 않고도 (필요한 경우) 스크립트를 변경할 수 있습니다. 또한 Docker 호출이 올바른 순서로 실행되고 작업의 모든 처리를 한 곳(스크립트)에 수집하도록 보장합니다.

답변2

매시간 작업을 시작하고 시작 시 모든 스크립트를 원하는 순서대로 결합할 수 있습니다.

이렇게 하려면 0분, 매시간, 매일, 매월, 매주 매일 작업을 실행해야 합니다. 이는 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;

따라서 crontab 테이블에 위의 코드를 입력해야 합니다. crontab -e터미널에 입력한 다음 위의 코드를 복사하세요.

관련 정보