cron jobとは?タイマーで実行されるスケジュールコマンド
cron jobは、固定された時刻や間隔で自動実行されるようスケジュールされたコマンドで、Unixシステムではcronデーモンによって管理されます。
cronはUnixの古典的なスケジューラです。コマンドをいつ実行すべきかを記述すると、cronデーモンがそのスケジュールで無人実行します。同じ5フィールドの時刻構文が、夜間buildのようなスケジュールされたpipelineをトリガーするためにCIにも現れるので、cron構文を理解するとこれらのスケジュールの読み書きに役立ちます。
cron jobとは何か
cron jobは、スケジュールとコマンドをペアにします。cronデーモンは時刻を確認し、各jobのスケジュールが一致したときに、起動する人がいなくても実行します。
5フィールドの構文
cronのスケジュールには5つのフィールドがあります。分、時、日 (日付)、月、曜日です。例えば 0 2 * * * は毎日午前2時を、*/15 * * * * は15分ごとを意味します。
スケジュールを読む
* * * * *は毎分実行します。0 0 * * 0は日曜日の深夜に実行します。30 9 1 * *は毎月1日の午前9時30分に実行します。
非対話的の落とし穴
cron jobは、まばらなPATHとログインprofileのない、最小限で非対話的な環境で実行されます。プロンプトで機能するコマンドが、期待される変数やPATHエントリが欠けているためcronの下では失敗することがあります。
CIにおけるcron
CIプラットフォームは、スケジュールされたpipeline、つまり夜間のテスト実行や定期的な依存関係チェックのためにcron構文を借用します。workflowトリガーの5フィールド式は同じルールを使い、通常はUTCで解釈されます。
マネージドrunnerでのスケジュール実行
Latchkeyでは、cronでスケジュールされたworkflowは、設定したタイマーでrunnerをプロビジョニングし、jobを実行して破棄します。実行の間にマシンがアイドルすることなく、スケジュールされた実行の分だけ支払います。
重要なポイント
- cron jobは、固定されたスケジュールでコマンドを自動実行します。
- 5フィールドの構文で、分、時、日、月、曜日を設定します。
- CIはスケジュールされたpipelineのためにcron構文を再利用し、通常はUTCです。