Skip to content
Latchkey

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です。

関連ガイド