Cron ガイド
ガイド

Cron vs 代替手段: systemd タイマー・クラウドスケジューラー

crontab の代わりに別のスケジューラーを使うのはいつか

crontab は数十年にわたり Unix スケジューリングの標準でしたが、今日では目的に応じて選べる代替手段が数多くあります。重要なのは、スケジュール式そのものはほとんどが同じ5フィールドの cron 構文を使うという点です。したがってどのプラットフォームを使うにしても、式はまずこのツールで検証できます。

systemd タイマーは最新の Linux における標準的な代替手段です。cron と違って journalctl で実行ログをすぐに確認でき、サービスユニットとの依存関係の管理、そしてシステムが停止していた間に見逃した作業を起動後に実行する Persistent=true オプションに対応しています。ただし時刻表記は cron 構文ではなく OnCalendar 形式なので、別途習得する必要があります。

クラウド・サーバーレススケジューラーはマネージド環境で人気です。AWS EventBridge Scheduler、GCP Cloud Scheduler、Vercel Cron、Cloudflare Cron Triggers などはほとんどが標準の cron 式をそのまま受け付け、サーバーを自分で管理する必要がありません。ただし実行基準のタイムゾーンが通常 UTC である点は必ず確認してください。

CI パイプラインのスケジュールもよく使われます。GitHub Actions の on: schedule や GitLab CI のパイプラインスケジュールは、リポジトリの作業(テスト・デプロイ・レポート)を定期実行するのに適しています。cron 構文を使いますが UTC 基準であり、ランナーの待機のため正確な時刻より数分遅延することがあります。

選択基準は単純です。Linux サーバー1台で動く作業なら cron または systemd タイマー、サーバーなしでマネージドに動かしたいなら クラウドスケジューラー、リポジトリと結びついた作業なら CI スケジュールが自然です。いずれの場合も、スケジュール文字列はこの解釈ツールで次回の実行時刻を確認してから貼り付けてください。

資料

スケジュール集

コピーしてすぐ使えるレシピ

構文チートシート

5つのフィールドと特殊文字を一目で

マクロ・別名

@daily のような省略表現

ガイド

cron を正しく理解し、ミスを減らすための実践ガイド