다음과 같은 명령 세트가 있습니다.
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
터미널에 입력한 다음 위의 코드를 복사하세요.