一度に1つのジョブを実行し、1時間ごとにすべてのジョブを実行する方法は?

一度に1つのジョブを実行し、1時間ごとにすべてのジョブを実行する方法は?

次のコマンドセットがあります。

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;

上記のコマンドはシーケンスなので、表示される順序で実行する必要があります。

私は何を達成すべきですか?

  • 一度に1つのジョブのみを実行
  • 順序を尊重します。たとえば、Account最初に実行する必要があるAgreementTypeAgreementType最初に実行する必要がある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呼び出しが正しい順序で実行され、ジョブのすべての処理が1つの場所(スクリプト)に収集されることを保証します。

答え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端末に入力して上記のコードをコピーしてください。

関連情報